Компоненты систем программирования (1119464), страница 4
Текст из файла (страница 4)
д.•Библиотечные компоненты имеют общее программное ядрои проектируются на базе единых архитектурных принципов•Компоненты, включаемые в библиотеки, подчиняютсяправилам инкапсуляции: они имеют открытыереализованные интерфейсы, детали реализации скрываютсявнутри библиотек и не видны пользователям114Библиотеки компонентовсистем программирования•••Отдельные компоненты поставляются в виде двоичныхмодулей (в нетекстовом виде), что делает их независимымиот конкретных систем программирования и позволяетиспользовать в распределённом системном окруженииНад компонентами можно проводить операциюконтейнеризации, то есть помещения в контейнеры,допускающие внешнее визуальное представление,поддерживается развивающуюся технологию визуальногопрограммирования (в стиле “drag & drop”)Примеры библиотек компонентов:• COM (Component Object Module) и DCOM (Distributed COM)• CORBA (Common Object Request Broker Architecture)• библиотеки серверов приложений .NET и J2EE115Требования к библиотекамсистем программирования• Основное назначение библиотекисистемы программирования – бытьстандартной, то есть содержатьсредства, необходимые для каждойреализации данного языка116Требования к составу библиотексистем программирования••••••Поддержка свойств языка (управление исключениями)Предоставление информации о зависящих от реализацииаспектах языка (максимальный размер целых значений)Предоставление функций, которые не могут быть написаныоптимально для всех вычислительных систем на данномязыке программирования (sqrt(), memmove())Предоставление средств переносимости программ (работасо списками, функции сортировки, потоки ввода/вывода)Предоставление основы для расширения возможностей(соглашения и средства, позволяющие обеспечить операциидля данных пользовательских типов, в стиле, в которомобеспечиваются операции для встроенных типов)Стандартная библиотека должна быть основой и117теоретическим базисом других библиотекСвойства компонентов библиотексистем программирования•••••••••Общезначимый характер структур данных и алгоритмов(стек, список, очередь, …, сортировка, поиск, копирование, …)ЭффективностьНезависимость от конкретных алгоритмов, предоставлениевозможности указывать алгоритм в качестве параметраЭлементарность, отсутствие излишних усложнений илипопыток совместить различные функции в однойБезопасность (устойчивость к неверному использованию) вбольшинстве типичных случаев использованияЗавершённость в своей функциональностиСочетаемость библиотечных средств друг с другомУдобная и безопасная система умолчанийОбщепринятый стиль программирования118Разработка распределённыхпрограммРаспределённая системаНабор независимых компьютеров,представляющихся их пользователямединой объединённой системой(определение вольное, неверное, но пригодное)119Разработка распределённыхпрограмм1.
От пользователей скрыты различия междукомпьютерами и способы связи между ними2. Пользователи и приложения единообразноработают в распределённых системах,независимо от того, где и когда происходит ихвзаимодействиеОсновные требования к распределённымсистемам программного обеспечения:• Прозрачность• Открытость• Масштабируемость120Разработка распределённыхпрограмм• Прозрачностью программной системы называется целыйкомплекс её свойств, благодаря которым обеспечиваетсясокрытие (упрятывание) особенностей реализации системы• Открытость системы есть использование синтаксических исемантических правил, основанных на (открытых) стандартах• С открытостью программных систем связаны ихпереносимость (способность приложений работать в составеразных распределённых систем) и способность квзаимодействию• Масштабируемость может достигаться только с помощьюдецентрализации основных служб системы и управляющихалгоритмов121Разработка распределённыхпрограмм “клиент-сервер”• Клиентом называется программная система, посылающаязапрос серверу на выполнение какой-либо услуги• Сервером называется программная система, выполняющаязадание, полученное по запросу от клиента• Взаимодействие между клиентом и сервером может бытьсинхронным и асинхронным• Синхронным (блокирующим) называется такоевзаимодействие, при котором клиент, отослав запрос,блокируется и может продолжать работу только послеполучения ответа от сервера• В рамках асинхронного (неблокирующего) взаимодействияклиент после отправки запроса серверу может продолжать122работу, даже если ответ на запрос ещё не пришёлВиды взаимодействия в сетиhttp://sp.cmc.msu.ru/courses/sdpi/mdwrbook.pdfА отправляетсообщение ипродолжаетработуА завершаетработуАв случае несохранной связисообщение может бытьотправлено только,сохранная связь неесли Б работаеттребует одновременнойработы А и БвремяББ не работаетБ стартует иполучаетсохранённоесообщениеАсинхронная связь(сохранная и несохранная)отправка запроса иожидание ответаАзапросполученизвещение ополучениии ответвремяББ работает, нообработкаделает что-то иное запросаНесохранная синхронная связь,ориентированная на ответ123Разработка распределённыхпрограмм “клиент-сервер”окружениеразработкиIDLклиентскийпроцесспрограммаклиентаинтерфейс вызова,зависящий от языкаклиентскийпереходниктекстына IDLкомпиляторIDLзаголовкиинтерфейсасерверныйпроцесспрограммасервераинтерфейс вызова,зависящий от языкасерверныйпереходник124Принцип работы модели удалённоговызова процедурысерверный процессклиентский процессклиентсервервызов процедурыклиентскийпереходниксвязываниемаршалингсериализацияотправкапроцедурасерверныйпереходниккоммуникационныймодульдемаршалингдесериализацияполучениедиспетчер (выборпереходника)коммуникационныймодуль125Разработка распределённыхпрограмм “клиент-сервер” в DCEUuidgenФайл определения IDLКомпилятор IDLФайл-заголовокклиента/сервера (*.h)Код клиента/сервераКод переходникаклиента/сервераКомпилятор СиКомпилятор СиМодуль клиента/сервераМодуль переходникаклиента/сервераБиблиотекаКомпоновкаПрограммаклиента/сервера 126Разработка распределённыхпрограмм: COM/DCOM• Технология COM (Component Object Model) и её вариант дляраспределённых систем DCOM (Distributed COM):• клиентская программа использует объекты своегопрограммного сервера так, как если бы эти объектыявлялись частью клиентской программы• Основную роль играет интерфейс объектов, формируемыйпри помощи объектно-ориентированного языка IDL• Клиенту известны только интерфейсы объектов• Сервер предназначен для реализации объектов• Переход к объектно-ориентированному взаимодействиюпривёл к пересмотру модели удалённого вызова процедуры ипоявлению модели удалённого обращения к методу127Разработка распределённыхпрограмм: COM/DCOM• Взаимодействие клиента и сервера проходит независимо оттого, как клиент и сервер распределены по компьютерам:• на одном компьютере в рамках единого процесса(взаимодействие между клиентом и сервером происходитпри помощи интерфейса объекта в едином адресномпространстве с использованием динамических библиотек)• на одной машине в рамках разных процессов посокращённой схеме удалённого обращения к методу (спереходниками, маршалингом и демаршалингом, но безобращения к сети)• на различных компьютерах в рамках информационнойсети (технология DCOM) с полным использованием моделиудалённого обращения к методу128Разработка распределённыхпрограмм: CORBA• Брокерами объектов называют распределённые системыпрограммного обеспечения, основанные на понятиираспределённого объекта и удалённом обращении к методам• Стандарт CORBA (Common Object Request Broker Architecture) –спецификация для создания и управления распределённымиобъектно-ориентированными приложениями• Система, подчиняющаяся спецификации CORBA, состоит из:• брокера запросов объектов, содержащего базовыефункции взаимодействия объектов• служб CORBA, доступных с помощью стандартизованногоприкладного программного интерфейса• средств CORBA, предоставляющих службы верхнего уровня,необходимые приложениям129Разработка распределённыхпрограмм: CORBAinterface Purchasing {float getQuote (in long productId);float purchaseGoods (in long productId,in long quantity)}прикладной объект(клиент)IDL поставщикаслужбыкомпилятор IDL(клиентская сторона)генератор IDLкомпилятор IDL(серверная сторона)прикладной объект(клиент)прикладной объект(поставщик службы)переходникскелетонинтерфейс динамического обращенияброкер запросов объектов (object request broker – ORB)репозиторий интерфейсов130Разработка распределённыхпрограмм: CORBA• Интерфейсы описываются на языке описания интерфейсов IDLсистемы CORBA• Спецификации IDL транслируются в заместители объектов настороне клиента и в скелетоны на стороне сервера• Программа заместителя содержит в себе описание методов,предоставляемых реализацией объекта• Скелетон защищает от проблем распределённости сервер• Заместитель и скелетон могут быть написаны на любом из техязыков, которые поддерживаются компилятором с языка IDLCORBA: Си, Си++, Java, Smalltalk, Ада, Кобол, Лисп, PL/1, Pythonи IDLScript131Разработка распределённыхпрограмм: CORBA• Спецификация CORBA допускает обратныеотображения: предусмотрено проведениеотображения записи интерфейсов на языкеJava в записи интерфейсов на IDL• Обратное отображение позволяет создаватьобъекты, доступные из других приложений,написанных на других языкахпрограммирования132сервер HTTPмежсетевой экраншлюзHTTPглобальная вычислительная сеть (Интернет)тоннель HTTPмежсетевой экранГлобальная информационная сеть:взаимодействие клиента и сервера HTTPагентHTTPклиент HTTP133клиентсерверHTTPmiddlewareсервер(управление ресурсами)глобальная вычислительная сеть (Интернет)Расширение трёхъярусной архитектурыперемещением клиента на удалённый компьютер сдоступом через Интернет(архитектура B2C – Business to Consumer)клиентHTTPклиент134middlewareсервер(управление ресурсами)глобальная вычислительная сеть (Интернет)сетевойсервермежсетевой экранАплеты как способ реализации удалённых клиентовклиентаплетвиртуальная машина Javaнавигатор135клиентпрограмма CGImiddlewareсервер(управление ресурсами)глобальная вычислительная сеть (Интернет)сетевойсервермежсетевой экранПрограммы общего шлюзового интерфейса (CGI)как способ взаимодействия c приложением,расположенным на серверной сторонеЗапросHTTP GETнавигатор136виртуальная машина Javaклиентпроцесс Javamiddlewareсервер(управление ресурсами)глобальная вычислительная сеть (Интернет)сетевой сервермежсетевой экранСервлетыкак способ взаимодействия c приложением,расположенным на серверной сторонеЗапросHTTP GETнавигатор137Разработка распределённыхпрограмм: серверы приложений• Сервер приложений – форма системной поддержкираспределённых программ, взаимодействующих в Интернете• Наиболее широко распространены серверы приложений• J2EE фирмы Sun Microsystems• .NET фирмы Microsoft• OAS фирмы Oracle Corporation• WebLogic фирмы BEA Systems (Oracle)• WebSphere компании IBM138сетевойсерверпрезентационный слойслой прикладной логикисоединение со слоемуправления ресурсамисервер приложенийглобальная вычислительная сеть (Интернет)другие серверы(e-mail, SOAP, …)межсетевой экранРазработка распределённыхпрограмм: серверы приложенийдругиепротоколыHTTPклиентнавигаторслой управления ресурсами139Разработка распределённыхпрограмм: серверы приложений• Поддержка взаимодействия и презентации в сервере J2EE:• сервлеты, язык тегов JSP (Java Server Pages)• прикладной интерфейс JAXP (Java API for XML Parsing)• система электронной почты (Java Mail)• служба аутентификации и авторизации JAAS• Поддержка интеграции приложений в сервере J2EE:• компоненты EJB (Enterprise Java Bean)• интерфейс именования JNDI (Java Naming and Directory Interface)• служба сообщений JMS (Java Message Service)• транзакционный интерфейс JTA (Java Transaction API)• Поддержка доступа к ресурсам в сервере J2EE:• связь с базами данных JDBC (Java Data Base Connectivity)• подключение архитектур J2CA (J2EE Connector Architecture) 140Разработка распределённыхпрограмм: серверы приложений• Серверы приложений позволяют работать с разнообразнымиклиентскими программами:• сетевые навигаторы• приложения, такие же, как и в традиционных системах, чтопозволяет интегрировать множество приложений в единыеслаженно работающие комплексы, при этом в самиприложения никаких изменений вносить не требуется• устройства, например, мобильные телефоны• программы электронной почты• клиенты сетевых служб, то есть приложения,взаимодействующие с сервером приложений черезстандартные протоколы сетевых служб141Системы программированиякомпании Microsoft – .NET и С#• Ядро системы программирования .NET Framework –спецификация общеязыковой инфраструктуры CLI(Common Language Infrastructure)• Спецификация определяет единый промежуточныйязык CIL (Common Intermediate Language) и общуюсистему типов CTS (Common Type System),обеспечивающую совместимость типов• По спецификации CLI программы не интерпретируютсявиртуальной машиной, а транслируются в процессевыполнения в машинный код с помощью JIT142компиляторов (Just-In-Time compilers)Системы программированиякомпании Microsoft – .NET и С#• Виртуальная исполняющая система VES (VirtualExecution System) обеспечивает трансляцию ивыполнение CIL-программ• Общеязыковая исполняющая среда CLR (CommonLanguage Runtime) – реализация VES на платформе MSWindows• Реализации CLI включают в себя:• .Net Compact Framework (для мобильных устройстви игровых приставок XBox)• Mono (проект с открытым кодом для ОС Linux)• Portable .NET (часть проекта dotGNU)143Требования сетевых служб ксистемам программирования• формат описания сообщений, распространяемых в сети (SOAP)• язык описания структур данных и интерфейсов сетевых служб икомпилятор с него (WSDL)• средства хранения описаний сетевых служб и поиска этихописаний (UDDI)• средства динамического управления потоком сообщений(координация работы сетевых служб, контроллеры разговоров,ролевые протоколы, стандарт WS-Coordination)• язык описания алгоритмов работы сетевых служб икомпоненты для работы с ним (композиция служб, BPEL4WS)• другие компоненты для поддержки сетевых служб144Формат сообщений SOAPконверт SOAPзаголовокблок заголовкателоблок тела145Взаимодействие в стиле документаконверт SOAPконверт SOAPтело SOAPтело SOAPдокумент Заказ товара- артикул- количестводокумент Накладная- номер заказаВзаимодействие в стилевызова удалённой процедурыконверт SOAPконверт SOAPтело SOAPтело SOAPметод имя Заказ товаравходной параметр 1артикулметод возвратвозвращаемое значениеномер заказавходной параметр 2количество146Простейшая реализация протокола SOAPзапрашивающий услугуреализация клиентавызывает службу каклокальнуюпереходник клиентавызывает мотор SOAP дляподготовки сообщениямотор SOAPупаковывает SOAP в HTTP ипередает его HTTP клиентудля отправки поставщикумотор HTTPпоставщик службыреализация службывызывает локальную процедуруреализации службыпереходник серверамаршрутизатор просматриваетсообщение, выбирает нужныйпереходник и передаёт сообщение емумаршрутизатор SOAPПередаёт содержимое сообщенияSOAP маршрутизаторусервер HTTP147Разработка распределённыхпрограмм: сетевые службыПунктиром показаны действия, выполняемые на стадии разработкиWSDL поставщикаслужбыгенератор WSDLкомпилятор WSDL(клиентская сторона)компилятор WSDL(серверная сторона)запрашивающий службупоставщик службыприкладной объект(клиент)прикладной объект(поставщик службы)переходникскелетонпромежуточныйслой, основанный наасинхронныхвзаимодействияхСообщенияпромежуточныйслой, основанный наасинхронныхвзаимодействиях148Сетевые службы и WSDLСпецификация WSDLабстрактная частьтипысообщенияоперациитипы портовконкретная частьсвязываниеслужбы и порты149Передача информации о службах в реестр UDDIдля поиска служб (при разработке и выполнении)и последующего обращения к нимзапрашивающий службупоставщик службыприкладной объект(клиент)прикладной объект(поставщик службы)переходникскелетонпромежуточныйслой,основанный на SOAPSOAP-сообщенияSOAP-сообщения(для поиска службы)реестр UDDIпромежуточныйслой,основанный на SOAPSOAP-сообщения(для публикации описания службы)промежуточный слой,основанный на SOAPописания служб150Взаимодействие с реестрами UDDIи между нимизапроссетевой службыпоставщиксетевой службыинтерфейсзапросовреестраинтерфейспубликацииреестраинтерфейс публикацииреестраинтерфейссетевой службыописания службреестр Аинтерфейс запросовреестраинтерфейссетевой службыприкладные программныеинтерфейсыинтерфейсы подписки,подпискинадзоранадзораи репликации(SOAP/HTTPS)описания службреестр Б151Представление внутренней системной службы вкачестве сетевойпоставщик службыреализациясетевой службыгенераторWSDLсерверныйпереходникописания WSDL-службмаршрутизаторSOAPкомпиляторWSDLмоторHTTPпубликаторв UDDIbusinessEntitybusinessService3интерфейсзапросов реестраbusinessTemplate123.23.1tModelинтерфейспубликации реестраРеестр UDDI152Взаимодействие нескольких клиентовс одной сетевой службой выполнением разговоров,совместимых с протоколом PзапрашивающийслужбуР1поставщикслужбыР2 Р3 запрашивающийслужбуР4Р5запрашивающийслужбу153Контроллер разговоровпоставщик службыобъект для Р1объект для Р2объект для Р3объект для Р4Р1Р1Р2Р3Р4Р5объект для Р5контроллер направляетсообщениясоответствующимобъектамзапрашивающийслужбуконтроллерразговоровР2 Р3 запрашивающийслужбуР4Р5запрашивающийслужбуклиенты обращаются заоперациями по одномуадресу(адресу контроллера)154Сетевые службы,децентрализованные протоколыи стандартизациякомпозиционная модель службы и язык(обычно имеющий графическое и текстовоепредставления)окружение выполнения исполняет бизнеслогику сетевой службы, обращаясь к другимслужбам (с помощью протоколов SOAP и HTTP)системная поддержка сетевой службыразработчиксхемыокружениеразработкиопределениясхемокружениевыполненияданные длявыполнениякомпозитной службыпоставщикдругая системная поддержка сетевой службы(например, мотор SOAP и контроллер разговоров)поставщик сетевой службыскладбухгалтерия155Модель сетевой службы поставщика товарав виде диаграммы активностипоставщикзаказчикreceiveзаказТовараподтвердитьЗаказотменитьЗаказзаказТовараinvokeпроверитьСкладлокальная служба,предоставляемаяпоставщикомпроверитьСкладнаСкладе=falseнаСкладе=trueinvokeпроверитьВозможностьПоставкиоптовый складпроверитьВозможностьПоставкипоставкаВозм=falseпоставкаВозм=truesendотменитьЗаказsendподтвердитьЗаказПунктирными линиями отмечены отношения между (внутренними)активностями и (внешними) протокольными сообщениями156Описание процесса с помощью диаграммысостоянийстарт при получении нового заказаначало/start "invoke проверитьСклад"поиск продуктов наскладепоиск на складе выполнен (наСкладе)[наСкладе=false]/start "invoke проверитьВозможностьПоставки"поиск на складе выполнен (наСкладе)[наСкладе=true]/start "send подтвердитьЗаказ"поиск продуктов у другогопоставщикапоиск на внешнем складе выполнен (поставкаВозм)[поставкаВозм=false]/start "send отменитьЗаказ"заказ отмененпоиск на внешнем складе выполнен (поставкаВозм)[поставкаВозм=true]/start "send подтвердитьЗаказ"заказ подтвержден157Описание процесса с помощью сети ПетриНАЧАЛО(при вызове операциизаказТовара)invoke проверитьСкладВОШЛИ НА СКЛАДнет операцииinvoke проверитьВозможностьПоставкинаСкладе=trueнаСкладе=falseОБРАТИЛИСЬ КВНЕШНЕМУПОСТАВЩИКУsend отменитьЗаказпоставкаВозм=falseВЫПОЛНЕНО(ОТКАЗ)нет операциипоставкаВозм=trueГОТОВЫ ПОСЛАТЬПОДТВЕРЖДЕНИЕsend подтвердитьЗаказВЫПОЛНЕНО(ПОДТВЕРЖДЕНИЕ)158Описание процесса с помощьюπ-исчисления и с помощью правилA=receiveЗаказТовара, invokeПроверитьСкладB=[поставкаВозм=false]sendОтменитьЗаказ+[поставкаВозм=true]sendПодтвердитьЗаказC=invokeПроверитьВозможностьПоставки.ВЗакупка=А.(([наСкладе=false]C) + ([наСкладе=true]sendПодтвердитьЗаказ))ON receive заказТовараIF trueTHEN invoke проверитьСклад;ON complete(проверитьСклад)IF (наСкладе==true)THEN send подтвердитьЗаказ;ON complete(проверитьСклад)IF (наСкладе==false)THEN invoke проверитьВозможностьПоставки;ON complete(проверитьВозможностьПоставки)IF (поставкаВозм==false)THEN send отменитьЗаказ;ON complete(проверитьВозможностьПоставки)IF (поставкаВозм==true)THEN send подтвердитьЗаказ;159Описание процесса с помощью иерархииактивностейобработать заказsequencereceiveзаказТовараперейти по поиску на складеchoiceinvokeпроверитьСкладнаСкладе=falseискать на оптовом складеsequenceinvokeпроверитьВозможностьПоставкинаСкладе=truesendподтвердитьЗаказперейти по поиску на оптовом складеchoiceпоставкаВозм=truesendподтвердитьЗаказпоставкаВозм=falsesendотменитьЗаказ160Ошибки могут обрабатываться аналогично тому, какэто делается во многих языках программирования, неимеющих специальной поддержкипоставщикreceiveПеременные:заказТовараСклад: URIнаСкладе, поставкаВозм: boolЗаказчик: StringinvokeпроверитьСкладнаСкладе=false ANDнет ошибокнаСкладе=true ANDнет ошибокinvokeпроверитьВозможностьПоставкипоставкаВозм=falseпоставкаВозм=truesendотменитьЗаказесли возвращается ошибкаили срабатывает таймаутздесьнекоторая логикауправленияисключениемsendподтвердитьЗаказВыделена часть потока, управляющая исключением161"Попытка-перехват-возбуждение"(try-catch-throw)• Логика управления исключением ассоциируется с активностью или сгруппой активностей.• Если некоторое логическое условие выполнено, выполняется и частьпрограммы, управляющая исключением.• Преимущества:1.