Предисловие редакторов русского издания

Вид материалаДокументы

Содержание


Распределенные объекты в стиле CORBA
Что такое распределенные объекты CORBA?
Подобный материал:
1   2   3   4   5   6   7   8   9   ...   16

Распределенные объекты в стиле CORBA


Возможно, секрет успеха OMG заключается в том, что эта группа создает спецификации интерфейсов, но не код как таковой. Интерфей­сы, определенные OMG, всегда основаны на реальных технологиях, раз­работанных компаниями — членами этой группы. Спецификации напи­саны на пассивном языке описания интерфейсов IDL (Interface Definition Language), который определяет функциональность компонентов, — т.е. внешние (часто называемые контрактными) интерфейсы с потенциаль­ными клиентами (в программном смысле). Компоненты, написанные на IDL, должны быть доступны независимо от программных языков, инст­рументальных средств, операционных систем и сетевой инфраструктуры программных компонент. А после принятия в декабре 1994 специфика­ции CORBA 2.0 эти компоненты будут способны взаимодействовать че­рез объектные брокеры CORBA, созданные разными производителями.

Что такое распределенные объекты CORBA?


Объекты CORBA представляют собой интеллектуальные единицы способные жить в любом месте сети. Они упакованы в виде двоичных компонентов, к которым удаленные клиенты могут обращаться, вызывая их методы. Как язык, так и компилятор, используемые для создания серверных объектов, являются полностью прозрачными для клиентов. Клиент не обязан знать, где располагается распределенный объект или под управлением какой операционной системы он выполняется. Он может находиться в том же процессе или на машине, расположенной где-то в "межгалактической" сети. Кроме того, клиенту не нужно знать, как ре­ализован серверный объект. Например, серверный объект может быть реализован как набор классов C++ или с помощью миллиона строк на КОБОЛе - клиент не почувствует разницу. В чем действительно нужда­ется клиент, так это в опубликованном интерфейсе своего серверного объекта. Такой интерфейс служит связующим контрактом между клиен­том и сервером. Весь смысл в IDL

Как мы уже сказали, CORBA использует контракты IDL для указа­ния границ компонентов и их контрактных интерфейсов с потенциаль­ными клиентами. CORBA IDL является чисто декларативным языком. Это означает, что он не описывает детали реализации. Вы можете ис­пользовать IDL, чтобы лаконично определить API, а также некоторые важные моменты, например, обработку ошибок. Методы, определен­ные на языке IDL, могут быть реализованы и вызваны из любых язы­ков, которые обеспечивают поддержку CORBA. В настоящий момент это С, C++, Ada и Smalltalk (COBOL, Java и Objective С находятся в работе) (Примечание переводчика: в настоящее время эти компилято­ры уже созданы). Программисты имеют дело с объектами CORBA, ис­пользуя естественные и хорошо знакомые языковые конструкции. Для всех сервисов и компонентов, которые связаны с шиной CORBA, IDL предоставляет интерфейсы, не зависящие от операционной системы и языка программирования. IDL позволяет взаимодействовать клиентским и серверным объектам, написанным на различных языках (рис. 1-1).

Вы можете использовать OMG IDL для указания атрибутов компо­нентов, родительских классов, от которых они

унаследованы, исключительных ситуаций, порождаемых компонентами, генерируемых ими событий, а также методов, которые поддерживаются интерфейсом ком­понентов, включая входные и выходные параметры методов и их типы данных. Грамматика IDL является подмножеством C++ с дополнитель­ными ключевыми словами для поддержки концепции распределенности, кроме того, полностью поддерживаются особенности стандарта пре­процессора C++ и директивы pragma.

Амбициозность целей CORBA заключается в «IDL-изации» всего клиент/серверного middleware и всех компонентов, взаимодействующих через ORB. OMG надеется достичь этих целей с помощью следующих двух шагов: 1) она превратит все в гвозди и 2) даст каждому молоток.

• «Гвоздем» программы станет IDL. Он позволяет производителям ком­понентов описать на стандартном языке определений интерфейсы и структуры поставляемых объектов. Определенные с помощью IDL кон­тракты связывают производителей распределенных объектных серви­сов с их клиентами. Объект, который запрашивает что-либо у другого объекта, обязан знать интерфейс этого объекта. Репозитарий Интер­фейсов (Interface Repository) CORBA содержит определения всех таких интерфейсов. Он содержит метаданные, позволяющие компонентам находить друг друга динамически во время выполнения (run-time). Это делает CORBA самоопределяемой системой.

• «Молоток» состоит из набора распределенных сервисов, которые будут поставлять производители OMG. Такие сервисы определяют:

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

Звучит знакомо? Конечно. Мы описываем «объектную волну» кли­ент/серверных вычислений. Нынешнее время — время взаимодействую­щих объектов в противоположность взаимодействующим процессам (Целью этой новой волны является создание для индустрии программ­ного обеспечения некоего объектного подобия "Lego" (самый популяр­ный в мире игрушечный конструктор, прим. ред.) , не зависящего от конкретных производителей, не зависящего от операционных систем, и языков программирования.) Целью этой "новой волны" является создание мультипроизводителей, мультиоперационных систем, муль-тиязыков, функционирующих в "Лего" мире, используя объекты. (При­мечание переводчика: В данном случае "Лего" имеет смысл универсаль­ного идеального конструктора для создания программных компонен­тов). Такие производители, как Oracle, Sun, HP, IBM, Digital, Apple, Netscape, Tandem и NCR, используют CORBA как стандартный, IDL-ный интерфейс на объектной дороге. IDL является контрактом, кото­рый связывает их всех вместе.



Рис из номера. Наелись; "Дож* зампно. ао чего все похож» на позли "