1.Необходимость и преимущества использования компонентов 2. Понятие компонентов и их разновидности 3. Интерфейсный контракт 4. Компонентная модель и среда.

Презентация:



Advertisements
Похожие презентации
1 Современные системы программирования. Часть 2. Системное и прикладное программное обеспечение Малышенко Владислав Викторович.
Advertisements

WEB- ТЕХНОЛОГИИ Лекция 6. Понятие Web- сервисов 1 Интерфейс в глобальную сеть для некоторого абстрактного программного обеспечения, этот интерфейс позволяет.
Сетевые службы Для конечного пользователя сеть это не компьютеры, кабели и концентраторы и даже не информационные потоки, для него сеть это, прежде всего,
1 Диаграммы реализации (implementation diagrams).
Различия и особенности распространенных протоколов. Принципы работы протоколов разных уровней. Предоставление сетевых услуг. Борисов В.А. КАСК – филиал.
1 ИССЛЕДОВАНИЕ ВОЗМОЖНОСТЕЙ COM- ТЕХНОЛОГИИ ДЛЯ ПОСТРОЕНИЯ РАСПРЕДЕЛЕННЫХ ПРОГРАММНЫХ ПРОДУКТОВ Component Object Model Министерство образования и науки.
Языки и методы программирования Преподаватель – доцент каф. ИТиМПИ Кузнецова Е.М. Лекция 7.
WORK WITH UML Универсальный язык моделирования (UML) Studybook for students Author Dudnik Oxana.
Учебный курс Технологии и средства разработки корпоративных систем Лекция 1 Открытые системы. Клиент и сервер Лекции читает кандидат технических наук,
COM (Component Object Model) – модель многокомпонентных объектов.
Лекция 2. Тема « Новые технологии и тенденции развития Интернет »
Унифицированный язык моделирования UML является графическим языком для визуализации, конструирования и документирования систем, в которых большая роль.
Объектно- ориентированная платформа Windows
Лекция 5 Способы конструирования программ. Основы доказательства правильности.
OpenGL и Direct3D сравнение стандартов Выполнил: Пенкин А. Группа И-204.
Классификация БД. СУБД и ее компоненты. Логическое и физическое описание данных.
Технические возможности. Наши цели Максимальная гибкость Максимальная скорость считывания и обработки данных Стабильность работы Максимальная простота.
Лекция 23 Лекция 23 Схемы распределения данных и запросов. Обработка распределенных данных и запросов. Многопотоковые и многосерверные архитектуры. Типы.
Технология модели «клиент-сервер». Роли Компьютер, управляющий тем или иным ресурсом, принято называть сервером этого ресурса Компьютер, желающий воспользоваться.
Тема 5. Основы современной технологии программирования Программирование в средах современных информационных систем. Интегрированные системы разработки.
Транксрипт:

1.Необходимость и преимущества использования компонентов 2. Понятие компонентов и их разновидности 3. Интерфейсный контракт 4. Компонентная модель и среда 5. Связь между процессами и типы взаимодействий компонентов Вопросы

6. Маршалинг и сериализация 7. Удаленный вызов процедур Вопросы

Понятие компонентных технологий Необходимость использования компонентов 1. Быстрая разработка программ из готовых компонентов, реализующих нужные функции приложение 2. Внедрение компонентов для расширения возможностей операционной системы, таких как DirectX Media или ActiveX Data Objects и др. 3. Интегрирование компонентов для расширения возможностей приложений

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

возможность построения тонких клиентов Архитектура тонкого клиента

Тестирование Ролевой кластер Заказчик Заинтересованное лицо (stakeholder) Внешнее заинтерес ованное лицо Спонсор (куратор) Пользователь Сопровождение Управление выпуском Разработка Управление программой Управление продуктом Удовлетворение потребителя Проектная группа 6 Модель проектной группы MSF параллельная разработка

повторное использование программных компонент Повторное использование программных компонент

Поняття компонентних технологій Понятие компонентных технологий Для описания и реализации распределенных систем введено понятие программного компонента. Программный компонент – это единица программного обеспечения, которая: исполняется на одном компьютере в пределах одного процесса, предоставляет некоторый набор сервисов, взаимодействует с другими компонентами через ее внешний интерфейс, выполняется на этом же компьютере, так и на удаленных компьютерах. через графический пользовательский интерфейс предоставляют свой сервис конечному пользователю

Поняття компонентних технологій Компоненты и интерфейсы

Поняття компонентних технологій Разновидности компонентов Архитектурный элемент, т.е программный модуль Произвольный и абстрактный элемент структуры системы, определенным образом выделенный среди окружения, решающий некоторые подзадачи в рамках общих задач системы, взаимодействующий с окружением через определенный интерфейс.

Поняття компонентних технологій Разновидности компонентов Компоненты сборки и конфигурационного управления На диаграммах компонентов в языке UML изображаются компоненты, являющиеся единицами сборки и конфигурационного управления: файлы с кодом на каком-то языке, бинарные файлы, какие-либо документы, входящие в состав системы.

Понятие компонентных технологий Пример диаграммы компонентов распределенной системы

Поняття компонентних технологій Разновидности компонентов Компоненты развертывания Представляют собой структурную единицу программной системы: обладают четко определенным интерфейсом, который полностью описывает ее зависимости от окружения, компонент может быть независимо поставлен или не поставлен, добавлен в состав некоторой системы или удален из нее, может включаться в состав систем других поставщиков.

Поняття компонентних технологій Разновидности компонентов Компоненты развертывания являются блоками, из которых строится компонентное программное обеспечение: JavaBeans, EJB, CORBA, ActiveX, VBA, COM, DCOM,.Net, Web-службы (web services).

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

Пример описания интерфейса Интерфейс library SimpleStocks { importlib("stdole32.tlb"); [ uuid(BC4C0AB0-5A45-11d2-99C5-00A02414C655), dual ] interface IStockMarket : IDispatch { HRESULT get_price([in] BSTR p1, [out, retval] float * rtn); } [ uuid(BC4C0AB3-5A45-11d2-99C5-00A02414C655), ] coclass StockMarket { interface IStockMarket; }; };

Пример взаимодействия компонентов Интерфейс

Интерфейс и интерфейсный контракт компонента При описании интерфейса компонента важны: сигнатура операций, которые можно выполнять с его помощью. компоненты, которые можно задействовать при работе, ограничения, которым должны удовлетворять входные данные операций свойства, которые выполняются для результатов их работы. Эти ограничения называются интерфейсным контрактом или программным контрактом компонента. Интерфейс

Интерфейс и интерфейсный контракт компонента Интерфейсный контракт для каждой операции самого компонента определяет предусловие и постусловие ее вызова. Предусловие операции должно быть выполнено при ее вызове, иначе корректность результатов не гарантируется. Постусловие вызванной у компонента операции должно быть выполнено после ее вызова, Постусловие операции определяет, какие ее результаты считаются корректными. Интерфейс

Интерфейс и интерфейсный контракт компонента Интерфейс Архитектура "Модель - представление - управление", используемая в приложении

Компоненты работают в конкретной инфраструктуре, которая разрешает компонентам находить друг друга и взаимодействовать по определенным правилам. Набор правил, которые определяют : интерфейсы компонентов, их реализацию, их работу в системе, взаимодействие друг с другом, называется компонентной моделью (component model). Компонентная модель Компонентна модель Компонентная модель

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

Для работы компонентов необходим некоторый набор базовых служб (basic services). Набор базовых служб вместе с компонентной моделью, которая поддерживается этими службами, называется компонентной средой (или компонентным каркасом, component framework). Примеры - разные реализации J2EE,.NET, CORBA. J2EE,.NET, CORBA являются спецификациями компонентных моделей и набора базовых служб, которые должны поддерживаться их реализациями. Компонентная среда Компонентная модель

Соотношение между компонентами, интерфейсами, компонентной моделью и компонентной средой Компонентная модель

Отличие компонентов от классов класс определяет набор реализованных интерфейсов и их реализацию. Контракт компонента не содержит реализацию его интерфейсов. класс написан определенным языком программирования. Компонент не привязан к конкретному языку Компонентная модель является для компонентов тем, чем для классов является язык программирования компонент является большей структурной единицей, чем класс. реализация компонента часто состоит из нескольких тесно связанных друг с другом классов. Компонентная модель

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

Модели взаимодействия Связь Широко распространенные модели взаимодействия: 1.Удаленный вызов процедур (Remote Procedure Call, RPC), 2.удаленное обращение к методам (Remote Method Invocation, RMI), 3.Ориентированный на сообщения промежуточный уровень (Message-Oriented Middleware, MOM) 4.Потоки данных (streams)

Связь между процессами Связь Уровни, интерфейсы и протоколы модели OSI Связь в распределенных системах основана на обмене (низкоуровневыми) сообщениями

Связь между процессами Связь Передача типового сообщения модели OSI

Связь между процессами Связь Когда процесс, запущенный на машине А, вызывает процедуру с машины Б, вызывающий процесс на машине А приостанавливается, а выполнение вызванной процедуры происходит на машине В. Информация может быть передана от вызывающего процесса к вызываемой процедуре через параметры и возвращена процессу в виде результата выполнения процедуры. Этот метод известен под названием удаленный вызов процедур {Remote Procedure Call, RPC).

Организация передачи сообщений и транзакций При взаимодействии между элементами программных систем инициатор взаимодействия- компонент, посылающий запрос на обработку, называется клиентом, а компонент, отвечающий и обрабатывающий запрос - сервером. Синхронное взаимодействие Компонент-клиент Компонент-сервер запрос ответ

Синхронное взаимодействие Синхронным (synchronous) называется такое взаимодействие между компонентами, при котором клиент, отослав запрос, блокируется и может продолжать работу только после получения ответа от сервера. По этой причине такой вид взаимодействия называют иногда блокирующим (blocking).

Способ организации синхронного взаимодействия Синхронное взаимодействие Наиболее распространенным и достаточно универсальным способом реализации синхронного взаимодействия в распределенных системах является удаленный вызов процедур (Remote Procedure Call, RPC). Его модификация для объектно-ориентированной среды называется удаленным вызовом методов (Remote Method Invocation, RMI). Удаленный вызов процедур определяет как способ организации взаимодействия между компонентами, так и методику разработки этих компонентов.

Схема разработки компонентов, использующих RPC Синхронное взаимодействие

Удаленный вызов процедур RPC Синхронное взаимодействие Вызов удаленной процедуры аналогичен вызову локальной процедуры. Процедура, необходимая клиенту, называется клиентской заглушкой (Client Stub). Она принимает запрос и произвольные параметры, упаковывает их в сообщение (данный процесс называется маршалингом) и отправляет сообщение серверу. Удаленная серверная заглушка (Server Stub) распаковывает сообщение (это действие носит имя демаршалинга) и вызывает нужную процедуру, передавая ей параметры. Когда серверная процедура заканчивает обработку запроса, она возвращает результаты серверной заглушке, которая упаковывает их в ответное со­общение и отправляет клиентской заглушке. Клиентская заглушка извлекает ре­зультаты из сообщения и возвращает их клиенту в виде выходных параметров.

Удаленный вызов процедур RPC Синхронное взаимодействие

Локальный вызов процедур Связь

Удаленные вычисления с RPC Связь Клиентская заглушка извлекает параметры процедуры и упаковывает их в сообщение. Она также помещает туда имя или номер вызываемой в сообщении процедуры, чтобы указать серверу, какая из процедур потребуется в данном случае.

Действия клиентской заглушки Синхронное взаимодействие 1.Определяется физическое местонахождение в системе сервера, для которого предназначен данный вызов. 2. Вызов процедуры и ее аргументы упаковываются в сообщение в некотором формате, понятном серверной заглушке. Этот шаг называется маршалингом (marshaling). 3. Полученное сообщение преобразуется в поток байтов (это сериализация, serialization) и отсылается на машину, на которой помещен серверный компонент. 4. После получения от сервера ответа, он распаковывается из сетевого сообщения и возвращается клиенту в качестве результата работы процедуры. Computer AComputer В Client EXE Прокси- сервер Заглушка COM Object Server EXE RPC

Схема разработки компонентов, использующих RPC Синхронное взаимодействие Серверная заглушка располагается на той же машине, где находится компонент-сервер. Ее действия: 1.Принимает сообщение, содержащее аргументы вызова, 2.Распаковывает эти аргументы при помощи десериализации (deserialization) и демаршалинга (unmarshaling), 3.Вызывает локально соответствующую функцию серверного компонента, 4.Получает ее результат, 5.Упаковывает его 6.Посылает по сети на клиентскую машину. Computer AComputer В Client EXE Прокси- сервер Заглушка COM Object Server EXE RPC

Диаграмма последовательности действий клиента та сервера Синхронное взаимодействие

Последовательность действий при удаленном вызове процедур Синхронное взаимодействие 1. Процедура клиента обычным образом вызывает клиентскую заглушку. 2. Клиентская заглушка создает сообщение и вызывает локальную операционную систему. 3. Операционная система клиента пересылает сообщение удаленной операционной системе. 4. Удаленная операционная система передает сообщение серверной заглушке. 5. Серверная заглушка извлекает из сообщения параметры и вызывает сервер. 6. Сервер выполняет вызов и возвращает результаты заглушке. 7. Серверная заглушка запаковывает результаты в сообщение и вызывает свою локальную операционную систему. 8. Операционная система сервера пересылает сообщение операционной системе клиента. 9. Операционная система клиента принимает сообщение и передает его клиентской заглушке. 10. Заглушка извлекает результаты из сообщения и передает их клиенту.

Удаленный вызов методов RMI Удаленный вызов методов При организации удаленного вызова методов применяются такие же механизмы. Отличия в его реализации связаны со следующими аспектами. Один объект-сервер может предоставлять несколько методов для удаленного обращения к ним. Для такого объекта генерируются клиентские заглушки, имеющие в своем интерфейсе все эти методы. Информация о том, какой именно метод вызывается, должна упаковываться вместе с аргументами вызова и использоваться серверной заглушкой для обращения именно к этому методу. Серверная заглушка в контексте RMI иногда называется скелетоном (skeleton) или каркасом. В качестве аргументов удаленного вызова могут выступать объекты. Передача указателей в аргументах удаленного вызова процедур практически всегда запрещена указатели привязаны к памяти данного процесса и не могут быть переданы в другой процесс.

Асинхронное взаимодействие В рамках асинхронного (asynchronous) или неблокирующего (non blocking) взаимодействия клиент после отправки запроса серверу может продолжать работу, даже если ответ на запрос еще не пришел.

Реализация асинхронного взаимодействия Асинхронное взаимодействие 1. При отправке сообщения клиент помещает его во входную очередь сервера, а сам продолжает работу. 2. После того, как сервер обработает все предшествующие сообщения в очереди, он выбирает это сообщение для обработки, удаляя его из очереди. 3. После обработки, если необходим ответ, сервер создает сообщение, содержащее результаты обработки, и кладет его во входную очередь клиента или в свою выходную. Чаще всего асинхронное взаимодействие реализуется при помощи очередей сообщений

Реализация асинхронного взаимодействия Асинхронное взаимодействие

Преимущества асинхронного взаимодействия Асинхронное взаимодействие 1.Асинхронное взаимодействие позволяет получить более высокую производительность системы за счет использования времени между отправкой запроса и получением ответа на него для выполнения других задач. 2.Меньшая зависимость клиента от сервера, 3.Возможность продолжать работу, даже если машина, на которой находится сервер, стала недоступной.

Транзакции Транзакции представляют собой группы действий, обладающие следующим набором свойств. Атомарность (atomicity). Непротиворечивость (consistency). Изолированность (isolation). Долговечность (durability).

Схема реализации поддержки распределенных транзакций

Реализация транзакции Транзакции 1.Примитив «начать транзакцию» сообщает координатору о необходимости создать новую транзакцию, зарегистрировать начавший ее объект как участника и передать ему идентификатор транзакции. 2.При передаче управления участник транзакции передает вместе с обычными данными ее идентификатор. 3.Компонент, операция которого была вызвана в рамках транзакции, сообщает координатору идентификатор транзакции с тем, чтобы координатор зарегистрировал и его как участника этой же транзакции. 4.Если один из участников не может выполнить свою операцию, выполняется откат транзакции. При этом координатор рассылает всем зарегистрированным участникам сообщения о необходимости отменить выполненные ими ранее действия. 5.Если вызывается примитив «завершить транзакцию», координатор выполняет протокол подтверждения, чтобы убедиться, что все участники выполнили свои действия успешно и можно открыть результаты транзакции для внешнего мира.

Протокол двофазного підтвердження Транзакции Если вызывается примитив «завершить транзакцию», координатор выполняет протокол двухфазного подтверждения (Two-phase Commit Protocol, 2PC), который состоит в следующем. 1. Координатор посылает каждому компоненту-участнику транзакции запрос о подтверждении успешности его действий. 2. Если данный компонент выполнил свою часть операций успешно, он возвращает координатору подтверждение. Иначе он посылает сообщение об ошибке. 3. Координатор собирает подтверждения всех участников и рассылает им сообщение о подтверждении транзакции в целом или о необходимости отменить транзакцию 4. Каждый участник, получив сообщение о подтверждении транзакции в целом, сохраняет локальные изменения, сделанные в рамках транзакции. Если же он получить сообщение об отмене транзакции, он отменяет локальные изменения.

Схема создания клиента и сервера Транзакції Транзакции

Контрольные вопросы