Distributed System L-5-6 (1034020), страница 2
Текст из файла (страница 2)
около 25)• Определенные пользователемИмя исключенияДатаexception PlayerBooked{sequence<Date> free;};interface Team {...void bookGoalies(in Date d) raises(PlayerBooked)};Операции декларируют4-35исключенияПодтипы, наследование(Inheritance)Неявный супертип:ObjectНаследуется типом Clubinterface Organization {readonly attribute string name;Супертип};interface Club : Organization {exception NotInClub{};readonly attribute short noOfMembers;readonly attribute Address location;attribute TeamList teams;attribute TrainerList trainers;void transfer(in Player p) raises NotInClub;};4-3618Подтипы, наследование(Inheritance)• Интерфейсы могут наследоваться (поддержкамножественных интерфейсов)• Множественное наследование• Противоречия должны разрешатьсякомпилятором IDL• Общий корень - Object• Наследование делает систему открытой длярасширения, но закрытой для модификаций (такназываемый принцип «Открытости-закрытости»)• Поддержка полиморфизма на уровне объектов4-37План лекции• OMG, Стандарты• Object Management Architecture (OMA)• Объектная модель OMA/CORBA и языкопределения интерфейсов IDL• Основные элементы архитектуры CORBA4-3819Основные элементыархитектуры CORBAРеализация объектаКлиентDII - Динам.выполнен.Клиент.стабИнтерф.ORBСкелетонреализацииОбъектн.адаптерЯдро ORBСтандартный интерфейсОдин интерфейс на каждую операциюОдин интерфейс на каждый адаптерИнтерфейс зависимый отORB4-39Ядро ORB• Обеспечивает доставку запроса к серверу иответа клиенту• Обеспечиваемая прозрачность:• расположения объекта• доступа• реализации объекта (язык, программно-аппаратнаяплатформа)• состояния объекта (активен/не активен)• коммуникации (скрытие протокола TCP/IP,разделенная область памяти, локальный вызов, …)• Создание как можно более простого ядра ORB,передача основной функциональности другимкомпонентам OMA (Сервисы, общие средства,…)4-4020Интерфейс ORB• ORB может быть реализован различнымиспособами• Для разделения приложения от деталейреализации CORBA определяет абстрактныйинтерфейс для ORB• объектные ссылки: бинарная <> строковая формы• создание списка аргументов для динамическоговызова4-41IDL Стабы (Stubs)• Механизм, создающий и осуществляющийзапросы от лица клиента• Зависит от конкретного языка реализации• «Статические» запросы• Представляет CORBA объект как обычнуюсущность языка• Совместно с ORB выполняет marshaling// C++Factory_var factory_objref;// Initialize factory_objref using Naming or// Trading Service (not shown), then issue requestObject_var objref = factory_objref->create();4-4221IDL Скелетоны (Skeletons)• Сущность языка программирования,соединяющая ОА с его реализацией (servant)• Реализация:• язык C: коллекция указателей на функции• язык C++: базовый класс от которого наследуютсяклассы реализаций (servants)• Зависит от конкретного языка реализации• «Статические» запросы• Совместно с ORB выполняет unmarshaling• Для динамических поддерживается специальныйинтерфейс (DSI)4-43Компиляция определенийинтерфейсов IDL4-4422Объектный адаптер(Object Adapter)• «Объектный адаптер - компонент CORBA,отвечающий за включение концепции объектовCORBA в концепцию реализаций объектов,принятую в языках программирования» [3]• Объекты CORBA абстрактны, а их реализации конкретны• Отвечает за передачу вызова и инициализацию• Плюсы концепции объектного адаптера:• поддержка различных стилей реализаций (servants),например объекты в БД, real-time ОА и т.п.• облегчение ядра ORB4-45Объект (Object)• Абстрактная или «виртуальная» сущность• Обладает интерфейсом• Для него определена соответствующаяреализация (Servant)• Находится, адресуется и вызывается пообъектной ссылке (object reference)4-4623Клиент (Client)• Программная сущность, вызывающая операцииреализации объекта• Прозрачность вызова объекта// C++object->op(arguments)4-47Реализация объекта(Servant)• Сущность на языке программированиясуществующая в контексте сервера иреализующая объект CORBA• Реализация:• Не ООЯ (например, С): набор функций,манипулирующих данными• ООЯ (например, С++, Java): экземпляр класса• Не обязательно содержит состояние (хранение вБД)4-4824Динамический интерфейсвызова (DII)• Прямой доступ клиента к механизму вызововORB• Динамический вызов без a-priori существующихIDL стабов• DII позволяет также осуществлять следующийтипы вызовов:• отложенный синхронный (deferred synchronous)• oneway (только посылка)4-49Литература / Internetисточники• В.
Эммерих Конструирование распределенныхобъектов. - М.:Мир. - 2002.• Vinoksi S. CORBA: Integrating Diverse ApplicationsWithin Distributed Heterogeneous Environments,IEEE’96.• Schmidt D.C. And Vinoski S. Object Adapters:Concepts and Technology, SIGS C++ Report, Vol. 9,No. 11, Nov-Dec 1997.• Ю.А.
Григорьев, А.Д. Плутенко. Жизненный циклпроектирования распределенных баз данных. Благовещенск. - 1999.• www.omg.org4-5025CORBA: цели• Поддержка распределенных и гетерогенныхзапросов прозрачным для пользователей ипрограммистов способом• Обеспечение интеграции новых компонентов состарыми• Открытый и свободно распространяемыйстандарт• Основой является консенсус большинства«игроков» индустрии4-51Развитие стандарта CORBA32.521.5Oct-07Oct-06Oct-05Oct-04Oct-03Oct-02Oct-01Oct-00Oct-99Oct-98Oct-97Oct-96Oct-95Oct-94Oct-93Oct-92Oct-9114-5226CORBA 1.0• Октябрь 1991• Объектная модель CORBA• Язык определения интерфейсов IDL• Ядро API для DII и Interface Repository• Отображение только на язык C4-53CORBA 2.0• Август 1996• Расширения стандарта:• Интерфейс динамического скелетона• Начальное разрешение ссылки• Расширения к Interface Repository• Интероперабельность (GIOP, IIOP, DCE CIOP)• Поддержка сервисов транзакций ибезопасности• Взаимодействие с OLE2/COM4-5427CORBA 3.0• Сентябрь 2002• Интеграция с Java и Internet• Управление качеством обслуживания• Компонентная архитектура CORBA4-55Объектная модель• Определена в OMA Guide и CORBA• Объекты (objects)• Типы (types)• Модули (modules)• Атрибуты (attributes)• Операции (operations)• Запросы (requests)• Исключительные ситуации (exceptions)• Подтипы (subtypes)4-5628.