Технология CORBA и особенности проектирования баз данных

Информация - Компьютеры, программирование

Другие материалы по предмету Компьютеры, программирование




ый набор методов и атрибутов. Каждому интерфейсу присваивается имя, уникальное в пределах одной распределенной системы. В отличие от СОМ в CORBA нет бинарного стандарта интерфейсов. Вместо этого существует стандартный язык описаний IDL. Так уж получилось, что языки с названием IDL существуют в трех различных технологиях - OSF/DCE, Microsoft/COM и OMG/CORBA. Эти языки во многом похожи, поскольку предназначены для одного и того же, но OMG/IDL несколько отличается от своих однофамильцев.

За его основу был взят язык C++, поэтому нам студентам, знакомым с C++, при работе с IDL будет достаточно удобно пользоваться данной технологией.

Сервант

Чтобы использовать CORBA-объект в конкретной программе недостаточно создать его или даже установить с ним связь. Функциональность CORBA-объекта недоступна для клиента до тех пор, пока в программе не создан объект, который позволяет получить доступ к методам, объявленным в IDL-интерфейсе. Этот объект (реализованный на C++, Java, C, Cobol, Ada, Smalltalk или некоторых других языках) и называется сервантом.

В зависимости от используемого языка программирования, серванты реализуются по-разному. Для объектно-ориентированных языков сервант является экземпляром (instance) некоторого класса, методы которого реализуют нужную функциональность. Такой класiасто называют классом реализации.

За время существования CORBA-объекта с ним может быть сопоставлено множество различных реализаций сервантов (но не более одного за раз). Более того, они могут содержаться в адресном пространстве различных приложений. Эти приложения могут быть даже запущены на различных компьютерах.

Можно сказать, что сервант является инкарнацией CORBA-объекта. Связь между сервантами и CORBA-объектами является хотя и строго формализованной, но очень гибкой. Сервант может быть создан раньше или позже CORBA-объекта; один сервант может обслуживать как один, так и несколько CORBA-объектов. Явное разделение циклов жизни CORBA-объектов и их сервантов (а именно серванты потребляют реальные ресурсы) - один из столпов, на которых базируется очень высокая масштабируемость CORBA-приложений.

Объектная ссылка

Единственная сложность, возникшая у меня с пониманием смысла термина объектная ссылка, это то, что он используется в двух различных смыслах.

В понимании относительно данной технологии, объектная ссылка представляет собой закодированную информацию о CORBA-объекте. Она включает имя хоста, порта TCP/IP, так же уникальный идентификатор данного CORBA-объекта и множество другой информации, позволяющей клиенту установить связь с серверным объектом через границы языков программирования, операционных систем и аппаратных платформ. Операции с объектной ссылкой невозможны для клиента, за исключением того, что клиент может превратить ее в строку и записать в файл или базу данных. Впоследствии кто угодно может iитать такую строку и преобразовать ее опять в объектную ссылку.

Во втором случае объектная ссылка - это переменная того или иного языка программирования, благодаря которой клиент осуществляет вызов удаленных методов.

Концептуально переменная типа объектная ссылка является указателем на так называемый proxy-объект, который существует на стороне клиента и обеспечивает выполнение удаленных вызовов. Сам proxy-объект сделан недоступным для программиста; связано это с тем, что его создание - задача не клиентского приложения, а самого ORBа. Логически с каждым proxy-объектом сопоставлена отдельная объектная ссылка, и под копированием объектной ссылки следует понимать создание как нового proxy-объекта, так и настроенного на него нового указателя. Разумеется, в реальных реализациях физического копирования proxy-объекта не происходит - как всегда в таких случаях, используется механизм iетчика ссылок.

Очень важно отчетливо понимать, что копирование (или уничтожение) объектных ссылок на стороне клиента влияет исключительно на клиентское приложение. Неправильное ведение iетчика ссылок в самом худшем случае приведет к продолжению физического существования в клиентском приложении ненужного proxy-объекта. Никакого отношения к серверному объекту эти действия не могут иметь в принципе. И создание, и уничтожение сервантов или серверных CORBA-объектов - задача серверного приложения. Философия CORBA состоит в том, чтобы клиент посылал сообщения установить связь с существующим объектом и разорвать с ним связь, а не создать серверный объект и уничтожить его. Разумеется, клиент может инициировать создание Corba-объектов вызвав у удаленного объекта специально предусмотренный для этого программистом (автором объекта) метод.

Создание простейшего объекта и его использование

[3]Как ни важно понимание теоретических аспектов CORBA, все же пример использования во многих случаях способен сказать больше, чем самые пространные рассуждения. В качестве демонстрации этапов создания CORBA-приложения напишем простейший пример. Сервер создает объект, реализующий операцию сложения двух целых чисел. Клиент устанавливает связь с серверным объектом, а затем вызывает этот его единственный метод, выводя результат на экран. В примере используется язык C++.

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

interface MyInterface {

long Summa (in long op1, in long op2);

};

Следующий шаг - это генерация файлов на стороне клиента и сервера с помощью компилятора idl2cpp. В качестве входа компилятор получает список idl-