Опубликован: 11.03.2009 | Уровень: специалист | Доступ: платный
Лекция 5:

Базовые объектные архитектуры распределенных систем. Технологии .NET, (D)COM+, CORBA, EJB

< Лекция 4 || Лекция 5: 123 || Лекция 6 >
Аннотация: Лекция посвящена теме базовым объектным архитектурам распределенных систем. В теоретической части рассказывается о базовых технологиях, их достоинствах и недостатках, проводится сравнительный анализ, рассказывается о языках описания интерфейсов CORBA и COM, их основных свойствах. А также, рассматриваются практические задания по теме.
Ключевые слова: CORBA, COM, middleware, программное обеспечение, интерфейс, класс объекта, X-клиент, доступ, адресное пространство, ПО, язык программирования, RPC, remote procedure call, механизм, передача сообщений, серверное приложение, сеть, client, stub, server, запрос, транспортный уровень, proxy, терминал, skeleton, операционная среда, универсальность, представление, DCOM, component, object model, компонентная модель, distributed, объект, класс, множество, множественное наследование, базовый тип, интерфейс объекта, идентификация, идентификатор, UUID, DCE, interface, pointer, интеграция, microsoft, IDL, MIDL, компонент, динамическая, компиляция, указатель, активный объект, transaction, MTS, Web-службы, security, жизненный цикл, информация, %TYPE, database, accessing, передача данных, data transfer, регистрация, registry, асинхронное взаимодействие, commonality, object request broker, architecture, архитектура, промежуточное программное обеспечение, объектный тип, web-приложение, автор, object manager, group, ядро, шина, ORB, Object, serviceability, Web-сервис, facility, поддержка, application-specific, domain-specific, interface definition, language, тип объекта, цепочка символов, компилятор, ссылка, object reference, идентифицирующая, dynamic, invocation, многоплатформенность, enterprise, JavaBeans, компонентная архитектура, Java, жизненный цикл программного обеспечения, X-протокол, EJB, EJB-контейнер, container, очередь, сервер, контейнер, remote, bean, транзакция, управление ресурсами, .NET, интегрированность, инфраструктура, средства разработки, развертывание, операционная система, корпорация, windows 2000, MS-NET, программный продукт, sql server, build, block, Интернет, среда разработки, Visual Studio, .NET Framework, базовый класс, ввод/вывод, SQL-запрос, ADO.NET, XML, Common Language Runtime, CLR, исполняемый код, сборка мусора, алгоритмический язык, промежуточный язык, intermediate language, JIT, just-in-time compiler, native, marshalling, обмен данными, packet, аргумент функции, delphi, Ada, COBOL, visualization, DLL, контрол, защита информации, t-бит, DOS, Windows NT, OS-9, Unix, solaris, windows xp, windows 9x, openvms, identical, память, служба каталогов, interoperability, тип данных, отображение, Smalltalk, Visual Basic, Си, event, life cycle, Persistence, разделяемый ресурс, concurrency control, external, querying, лицензирование, licensing, property, timing, collection, asynchronous messaging, анализ, рабочая группа, управление транзакциями, совместность

Базовые технологии. Сравнение на понятийном уровне

Функции CORBA и COM - это функции промежуточного middleware программного обеспечения объектной среды. Функциональность объекта предоставляется клиенту посредством обращения к абстрактным интерфейсам. Интерфейс определяет набор методов, присущие данному классу объектов. Клиент получает доступ к объекту только путем вызова метода, определенного в интерфейсе объекта, но детали реализации скрыты от клиента. Реальные действия выполняются в адресном пространстве объекта, возможно, удаленном по отношению к процессу клиента. Сокрытие деталей реализации и определяет независимость от платформы и языка программирования.


В обеих технологиях взаимодействие между клиентским процессом и сервером объекта, то есть процессом, который порождает и обслуживает экземпляры объекта, осуществляется за счет удаленного вызова процедур (RPC, remote procedure call). Механизм RPC реализует схему передачи сообщений, в соответствии с которой в распределенном клиент-серверном приложении процедура-клиент передает специальное сообщение с параметрами вызова по сети в удаленную серверную процедуру, а результаты ее выполнения возвращаются в другом сообщении клиентскому процессу.

Для этого на стороне клиента и на стороне сервера поддерживаются специальные компоненты, носящие название клиентский и серверный суррогаты (client stub и server stub). Для вызова метода объекта клиент обращается к клиентскому суррогату, который упаковывает аргументы в сообщение-запрос и передает их на транспортный уровень соединения. Серверный суррогат распаковывает полученное сообщение и в соответствии с переданными аргументами вызывает нужный метод объекта. В СОМ клиентский суррогат называется proxy, а серверный - stub. В CORBA клиентский суррогат не имеет специального названия, а серверный обозначают термином skeleton.

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

Понятие о технологии (D)COM(+)

(D)COM(+): COM, DCOM, COM+. COM (Component Object Model) - Объектно-Компонентная Модель (1993). D - distributed (1996).+ - 1998.

В СОМ объект характеризуется своим классом. Класс - это реализация некоторого множества интерфейсов. Множественное наследование интерфейсов не поддерживается, вместо этого объект может иметь несколько интерфейсов одновременно. В СОМ интерфейс может определяться путем наследования другого интерфейса. Для всех интерфейсов существует базовый интерфейс - IUnknown. Для того чтобы перейти от интерфейса базового типа к унаследованному интерфейсу или от одного из интерфейсов объекта к другому, клиент должен вызывать метод QueryInterface, определенный в базовом интерфейсе IUnknown.

Для идентификации классов и интерфейсов СОМ используются те же универсальные уникальные идентификаторы (UUID), которые приняты для идентификации интерфейсов в спецификации DCE RPC. Можно применять и символьные обозначения интерфейса, но затем они должны быть транслированы в надлежащий идентификатор UUID. Объект в СОМ - это экземпляр класса. Клиент получает доступ к объекту с помощью указателя на один из его интерфейсов (interface pointer). Идентификатор класса ссылается на конкретную реализацию, и фактический набор интерфейсов для данной реализации становится окончательно известен только на стадии выполнения. СОМ реализует интеграцию объектов на уровне двоичных кодов.

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

COM поддерживает интерфейс динамического вызова (когда интерфейс объекта не известен клиенту на этапе компиляции).

В COM для идентификации объектов используется механизм moniker, который обеспечивает преобразование символьного имени объекта в указатель интерфейса. Этот механизм действует для тех объектов, которые сохраняются в долговременной памяти. Два же активных объекта считаются идентичными, если для них совпадают указатели на интерфейс IUnknown. Для долговременного хранения в СОМ поддерживаются две модели. Первая и изначальная модель предоставляет клиенту возможность управлять хранением объекта. По второй модели Microsoft Transaction Server (MTS) обеспечивает управление хранением со стороны сервера.

В СОМ предусмотрены такие общие службы, как защита ( security ), управление жизненным циклом ( lifecycle managemеnt ), информация о типах ( type information ), именование ( naming ), доступ к базам данных ( database access ), передача данных ( data transfer ), регистрация ( registry ) и асинхронное взаимодействие.

Понятие о технологии CORBA

CORBA (Common Object Request Broker Architecture) - общая архитектура объектных брокеров (общая архитектура посредников передачи запросов объектам). Термином CORBA обозначают технологию, архитектуру и набор спецификаций и стандартов промежуточного программного обеспечения (middleware) объектного типа для создания распределенных программных приложений. Автором архитектуры CORBA является консорциум Object Management Group.

CORBA состоит из 4 основных частей.


  • Object Request Broker - брокер (посредник) объектных запросов, является ядром архитектуры CORBA. Это объектная шина, по которой происходит взаимодействие локальных и удаленных объектов. Помимо самого вызова метода удаленного объекта, ORB отвечает за поиск реализации объекта, его подготовку к получению и обработке запроса, передачу запроса и доставку результатов клиенту.
  • Object Services - объектные сервисы, реализации объектов, предоставляющие общие для объектно-ориентированной среды возможности: служба имен, служба событий, служба сохранения в долговременной памяти, служба транзакций и так далее.
  • Common Facilities - общие средства, это реализации объектов, необходимые для большого числа приложений, например, поддержка составных документов, потоков заданий и так далее.
  • Application и Domain Interfaces - прикладные и отраслевые интерфейсы. Прикладные объекты представляют собой реализации объектов для конкретных пользовательских приложений. В CORBA есть также понятие домена. Реализации объектов домена (CORBA domains) предназначены для приложений с вертикальной организацией.

В CORBA интерфейс объекта задается с помощью языка описания интерфейсов (Interface Definition Language, IDL). Тип объекта - это тип его интерфейса. Интерфейс идентифицируется именем, представленным цепочкой символов. В модели CORBA определен базовый тип для всех объектов - CORBA::Object. Объект поддерживает тип своего непосредственного интерфейса и по принципу наследования все его базовые типы.

CORBA IDL задает определения, которые могут отображаться в множество различных языков, не требуя при этом никаких изменений от целевого языка. Эти отображения реализуются компилятором IDL.

CORBA вводит понятие объектной ссылки ( object reference ), которая уникальным образом идентифицирует объект в сети.

Механизм долговременного хранения, то есть сохранения состояния объекта в долговременной памяти для дальнейшей его реактивации, в CORBA абсолютно прозрачен для клиента.

Наиболее распространенные службы CORBA - службы именования, управления жизненным циклом и событиями.

CORBA поддерживает интерфейс динамического вызова DII (Dynamic Invocation Interface).

В CORBA изначально была заложена многоплатформенность и поддержка множества популярных языков программирования без необходимости каких-либо изменений в них.

< Лекция 4 || Лекция 5: 123 || Лекция 6 >
Александра Каева
Александра Каева
Светлана Токаревская
Светлана Токаревская

Добрый день! Скажите пожалуйста, так и задумано, что в каждой лекции приложен один и тот же приктикум?

Евгений Вершинин
Евгений Вершинин
Россия, Нижний Новгород, Нижегородский государственный технический университет, 2008
Aleksandr Arshinskyi
Aleksandr Arshinskyi
Россия