Skip to content
Yan edited this page Dec 19, 2018 · 6 revisions

Билет 19

ИДМ-18-01

  • Комиссаров Я.В.
  • Усенко Л.Ю.
  • Яскевич К.И.
  • Лихачев С.В.

Модель взаимосвязи открытых систем. Понятие канала данных.

Базовая ЭМВОС - это модель, принятая ISO для описания общих принципов взаимодействия информационных систем. ЭМВОС признана всеми международными организациями как основа для стандартизации протоколов информационных сетей.

В ЭМВОС информационная сеть рассматривается как совокупность функций, которые делятся на группы, называемые уровнями. Разделение на уровни позволяет вносить изменения в средства реализации одного уровня без перестройки средств других уровней, что значительно упрощает и удешевляет модернизацию средств по мере развития техники.

ЭМВОС содержит семь уровней. Ниже приведены их номера, названия и выполняемые функции.

7-й уровень - прикладной (Application): включает средства управления прикладными процессами; эти процессы могут объединяться для выполнения поставленных заданий, обмениваться между собой данными. Другими словами, на этом уровне определяются и оформляются в блоки те данные, которые подлежат передаче по сети. Уровень включает, например, такие средства для взаимодействия прикладных программ, как прием и хранение пакетов в "почтовых ящиках" (mail-box).

6-й уровень - представительный (Presentation): реализуются функции представления данных (кодирование, форматирование, структурирование). Например, на этом уровне выделенные для передачи данные преобразуются из кода ЕBCDIC в ASCII и т.п.

5-й уровень - сеансовый (Session): предназначен для организации и синхронизации диалога, ведущегося объектами (станциями) cети. На этом уровне определяются тип связи (дуплекс или полудуплекс), начало и окончание заданий, последовательность и режим обмена запросами и ответаами взаимодействующих партнеров.

4-й уровень - транспортный (Transport): предназначен для управления сквозными каналами в сети передачи данных; на этом уровне обеспечивается связь между оконечными пунктами (в отличие от следующего сетевого уровня, на котором обеспечивается передача данных через промежуточные компоненты сети). К функциям транспортного уровня относятся мультиплексирование и демультиплексирование (сборка-разборка пакетов), обнаружение и устранение ошибок в передаче данных, реализация заказанного уровня услуг (например, заказанной скорости и надежности передачи).

3-й уровень - сетевой (Network): на этом уровне происходит формирование пакетов по правилам тех промежуточных сетей, через которые проходит исходный пакет, и маршрутизация пакетов, т.е. определение и реализация маршрутов, по которым передаются пакеты. Другими словами, маршрутизация сводится к образованию логических каналов. Логическим каналом называется виртуальное соединение двух или более объектов сетевого уровня, при котором возможен обмен данными между этими объектами. Понятию логического канала необязательно соответствие некоего физического соединения линий передачи данных между связываемыми пунктами. Это понятие введено для абстрагирования от физической реализации соединения. Еще одной важной функцией сетевого уровня после маршрутизации является контроль нагрузки на сеть с целью предотвращения перегрузок, отрицательно влияющих на работу сети.

2-й уровень - канальный (Link, уровень звена данных): предоставляет услуги по обмену данными между логическими объектами предыдущего сетевого уровня и выполняет функции, связанные с формированием и передачей кадров, обнаружением и исправлением ошибок, возникающих на следующем, физическом уровне. Кадром называется пакет канального уровня, поскольку пакет на предыдущих уровнях может состоять из одного или многих кадров.

1-й уровень - физический (Physical): предоставляет механические, электрические, функциональные и процедурные средства для установления, поддержания и разъединения логических соединений между логическими объектами канального уровня; реализует функции передачи битов данных через физические среды. Именно на физическом уровне осуществляются представление информации в виде электрических или оптических сигналов, преобразования формы сигналов, выбор параметров физических сред передачи данных.

В конкретных случаях может возникать потребность в реализации лишь части названных функций, тогда соответственно в сети имеется лишь часть уровней. Так, в простых (неразветвленных) ЛВС отпадает необходимость в средствах сетевого и транспортного уровней. В то же время сложность функций канального уровня делает целесообразным его разделение в ЛВС на два подуровня: управление доступом к каналу (МАС - Medium Access Control) и управление логическим каналом (LLC - Logical Link Control). К подуровню LLC в отличие от подуровня МАС относится часть функций канального уровня, не связанных с особенностями передающей среды.

Передача данных через разветвленные сети происходит при использовании инкапсуляции/декапсуляции порций данных. Так, сообщение, пришедшее на транспортный уровень, делится на сегменты, которые получают заголовки и передаются на сетевой уровень. Сегментом обычно называют пакет транспортного уровня. Сетевой уровень организует передачу данных через промежуточные сети. Для этого сегмент может быть разделен на части (пакеты), если сеть не поддерживает передачу сегментов целиком. Пакет снабжается своим сетевым заголовком (т.е. происходит инкапсуляция). При передаче между узлами промежуточной ЛВС требуется инкапсуляция пакетов в кадры с возможной разбивкой пакета. Приемник декапсулирует сегменты и восстанавливает исходное сообщение.

Современные фреймворки и их применение для разработки веб-приложений.

Spring Framework (или коротко Spring) — универсальный фреймворк с открытым исходным кодом для Java-платформы. Также существует форк для платформы .NET Framework, названный Spring.NET.

Первая версия была написана Родом Джонсоном, который впервые опубликовал её вместе с изданием своей книги «Expert One-on-One Java EE Design and Development»

Фреймворк был впервые выпущен под лицензией Apache 2.0 license в июне 2003 года. Первая стабильная версия 1.0 была выпущена в марте 2004. Spring 2.0 был выпущен в октябре 2006, Spring 2.5 — в ноябре 2007, Spring 3.0 в декабре 2009, и Spring 3.1 в декабре 2011. Текущая версия — 5.0.1.

Несмотря на то, что Spring не обеспечивал какую-либо конкретную модель программирования, он стал широко распространённым в Java-сообществе главным образом как альтернатива и замена модели Enterprise JavaBeans. Spring предоставляет бо́льшую свободу Java-разработчикам в проектировании; кроме того, он предоставляет хорошо документированные и лёгкие в использовании средства решения проблем, возникающих при создании приложений корпоративного масштаба.

Между тем, особенности ядра Spring применимы в любом Java-приложении, и существует множество расширений и усовершенствований для построения веб-приложений на Java Enterprise платформе. По этим причинам Spring приобрёл большую популярность и признаётся разработчиками как стратегически важный фреймворк.

Spring обеспечивает решения многих задач, с которыми сталкиваются Java-разработчики и организации, которые хотят создать информационную систему, основанную на платформе Java. Из-за широкой функциональности трудно определить наиболее значимые структурные элементы, из которых он состоит. Spring не всецело связан с платформой Java Enterprise, несмотря на его масштабную интеграцию с ней, что является важной причиной его популярности.

Этот фреймворк предлагает последовательную модель и делает её применимой к большинству типов приложений, которые уже созданы на основе платформы Java. Считается, что Spring реализует модель разработки, основанную на лучших стандартах индустрии, и делает её доступной во многих областях Java.


Счи­та­ет­ся, что плат­форма .NET Framework яви­лась отве­том ком­па­нии Microsoft на набрав­шую к тому вре­мени боль­шую попу­ляр­ность плат­форму Java. ASP.NET осно­вы­ва­ется на Common Language Runtime: раз­ра­бот­чики могут писать код для ASP.NET, исполь­зуя прак­ти­че­ски любые языки программирования, неко­то­рые из кото­рых вхо­дят в ком­плект. NET Framework (C#, Visual Basic.NET и JScript. NET), а дру­гие могут быть уста­нов­лены допол­ни­тельно (IronRuby, IronPython, PHP, Perl, Smalltalk, Haskell и др.). Тем не менее, нередко исполь­зу­ется не вполне кор­рект­ный тер­мин «.NET-про­грам­мист», кото­рый, види­мо, харак­те­ри­зует раз­ра­бот­чика на любом языке про­грам­ми­ро­ва­ния, кото­рый может быть исполь­зо­ван в. NET-про­ек­те.

Неко­то­рые осо­бен­но­сти ASP.NET:

  • Ком­пи­ли­ру­е­мый код выпол­ня­ется быст­рее, а боль­шин­ство оши­бок отлав­ли­ва­ется ещё на ста­дии раз­ра­бот­ки.
  • Рас­ши­ря­е­мый набор эле­мен­тов управ­ле­ния и биб­лио­тек клас­сов, уско­ря­ю­щий раз­ра­бот­ку.
  • Воз­мож­ность кэши­ро­ва­ния всей стра­ни­цы, её частей или дан­ных, исполь­зу­е­мых на стра­ни­це.
  • Воз­мож­ность раз­де­ле­ния визу­аль­ной части и биз­нес-логики по раз­ным фай­лам, есть воз­мож­ность выде­лять часто исполь­зу­е­мые шаб­лоны поль­зо­ва­тель­ских эле­мен­тов управ­ле­ния, таких как меню сай­та, нали­чие master-стра­ниц для зада­ния шаб­ло­нов оформ­ле­ния, поддержка AJAX (расширение ASP.NET AJAX).
  • Рас­ши­ря­е­мые модели собы­тий, обра­ботки запро­сов и сер­вер­ных эле­мен­тов управ­ле­ния.
  • Под­держка CRUD-опе­ра­ций при работе с таб­ли­цами через GridView.
  • Воз­можно созда­ние веб-при­ло­же­ний, кото­рые реа­ли­зуют шаб­лон Model-View-Controller (ASP.NET MVC Framework). .NET доста­точно широко рас­про­странён в сфере раз­ра­ботки внут­ри­кор­по­ра­тив­ных про­грамм­ных про­дук­тов, но в веб-раз­ра­ботке всё же встре­ча­ется отно­си­тельно ред­ко, как и дру­гие про­грамм­ные про­дукты кор­по­ра­ции Microsoft. Поэтому найти раз­ра­бот­чи­ков для веб-про­екта бывает доста­точно непро­сто. Исполь­зо­ва­ние. NET «тянет» за собой покупку и иного ПО от кор­по­ра­ции Microsoft (сер­вер­ной ОС, СУБД и т.п.). Тех­но­ло­гия доста­точно доро­гая в раз­ра­ботке и сопро­вож­де­нии: кроме затрат на покупку лицен­зий на необ­хо­ди­мое ПО суще­ствен­ный вклад в бюд­жет про­ек­тов вно­сят высо­кие зар­платы раз­ра­бот­чи­ков.

Django — фрейм­ворк для веб-при­ло­же­ний на языке Python. Один из основ­ных прин­ци­пов фрейм­ворка — DRY (don't repeat yourself). Веб-системы на Django стро­ятся из одного или несколь­ких при­ло­же­ний, кото­рые реко­мен­ду­ется делать отчуж­да­е­мыми и под­клю­ча­е­мы­ми. Это одно из замет­ных архи­тек­тур­ных отли­чий этого фрейм­ворка от неко­то­рых дру­гих (напри­мер, Ruby on Rails). Также, в отли­чие от мно­гих дру­гих фрейм­вор­ков, обра­бот­чики URL в Django кон­фи­гу­ри­ру­ются явно (при помощи регу­ляр­ных выра­же­ний), а не авто­ма­ти­че­ски зада­ются из струк­туры кон­трол­ле­ров.

Django про­ек­ти­ро­вался для работы под управ­ле­нием Apache (с моду­лем mod_python) и с использованием PostgreSQL в каче­стве базы дан­ных. В насто­я­щее вре­мя, помимо PostgreSQL, Django может рабо­тать с дру­гими СУБД: MySQL (MariaDB), SQLite, Microsoft SQL Server, DB2, Firebird, SQL Anywhere и Oracle. Для работы с базой дан­ных Django исполь­зует соб­ствен­ный ORM, в кото­ром модель дан­ных опи­сы­ва­ется клас­сами Python, и по ней гене­ри­ру­ется схема базы дан­ных.

Архи­тек­тура Django похожа на «Модель-Пред­став­ле­ние-Кон­трол­лер» (MVC). Кон­трол­лер клас­си­че­ской модели MVC при­мерно соот­вет­ствует уров­ню, кото­рый в Django назы­ва­ется Пред­став­ле­ние (View), а пре­зен­та­ци­он­ная логика Пред­став­ле­ния реа­ли­зу­ется в Django уров­нем Шаб­ло­нов (Templates). Из-за этого уров­не­вую архи­тек­туру Django часто назы­вают «Модель-Шаб­лон-Пред­став­ле­ние» (MTV).

Пер­во­на­чально раз­ра­ботка Django велась для обес­пе­че­ния более удобной работы с новост­ными ресур­са­ми, что доста­точно сильно отра­зи­лось на архи­тек­ту­ре: фрейм­ворк предо­став­ляет ряд сред­ств, кото­рые помо­гают в быст­рой раз­ра­ботке веб-сай­тов инфор­ма­ци­он­ного харак­те­ра. Напри­мер, раз­ра­бот­чику не тре­бу­ется созда­вать кон­трол­леры и стра­ницы для адми­ни­стра­тив­ной части сай­та, в Django есть встро­ен­ное при­ло­же­ние для управ­ле­ния содер­жи­мым, кото­рое можно вклю­чить в любой сайт, сде­лан­ный на Django, и кото­рое может управ­лять сразу несколь­кими сай­тами на одном сер­ве­ре. Адми­ни­стра­тив­ное при­ло­же­ние поз­во­ляет созда­вать, изме­нять и уда­лять любые объ­екты напол­не­ния сай­та, про­то­ко­ли­руя все совер­шён­ные дей­ствия, и предо­став­ляет интер­фейс для управ­ле­ния поль­зо­ва­те­лями и груп­пами (с пообъ­ект­ным назна­че­нием прав).

Веб-фрейм­ворк Django исполь­зуется в таких круп­ных и извест­ных сай­тах, как Instagram, Disqus, Mozilla, The Washington Times, Pinterest, lamoda и др.

Некото­рые воз­мож­но­сти Django:

  • ORM, API доступа к БД с под­держ­кой тран­зак­ций
  • встро­ен­ный интер­фейс адми­ни­стра­то­ра, с уже име­ю­щи­мися пере­во­дами на мно­гие языки
  • дис­пет­чер URL на основе регу­ляр­ных выра­же­ний
  • рас­ши­ря­е­мая система шаб­ло­нов с тегами и насле­до­ва­нием
  • система кеши­ро­ва­ния
  • интер­на­ци­о­на­ли­за­ция
  • под­клю­ча­е­мая архи­тек­тура при­ло­же­ний, кото­рые можно уста­нав­ли­вать на любые Django-сайты
  • «generic views» — шаб­лоны функ­ций кон­трол­ле­ров
  • авто­ри­за­ция и аутен­ти­фи­ка­ция, под­клю­че­ние внеш­них моду­лей аутен­ти­фи­ка­ции: LDAP, OpenID и про­чие.
  • система филь­тров («middleware») для постро­е­ния допол­ни­тель­ных обра­бот­чи­ков запро­сов, как напри­мер вклю­чён­ные в дис­три­бу­тив филь­тры для кеши­ро­ва­ния, сжа­тия, нор­ма­ли­за­ции URL и под­держки ано­ним­ных сес­сий
  • биб­лио­тека для работы с фор­мами (насле­до­ва­ние, постро­е­ние форм по суще­ству­ю­щей модели БД)
  • встро­ен­ная авто­ма­ти­че­ская доку­мен­та­ция по тегам шаб­ло­нов и моде­лям дан­ных, доступ­ная через адми­ни­стра­тив­ное при­ло­же­ние
  • Некото­рые ком­по­ненты фрейм­ворка между собой свя­заны сла­бо, поэтому их можно доста­точно про­сто заме­нять на ана­ло­гич­ные. Но с неко­то­рыми (напри­мер, с ORM) это сде­лать не очень про­сто. Кроме возможностей, встро­ен­ных в ядро фрейм­ворка, суще­ствуют паке­ты, рас­ши­ря­ю­щие его воз­мож­но­сти.

На базе Django раз­ра­бо­тано доста­точно много готовых реше­ний, рас­про­стра­ня­е­мых под свободной лицен­зи­ей, среди кото­рых системы для управ­ле­ния интернет-мага­зи­на­ми, универсальные системы управ­ле­ния содержанием, а также более узко­на­прав­лен­ные проекты.