Поддержка передачи Объектов по значению

Задача поддержки передачи объектов по значению является следующим шагом на пути СORBA в честолюбивом стремлении «догнать и перегнать» все остальные технологии. В данном случае речь идет о Java, которая поддерживает эту особенность. Под передачей Объекта по Значению имеется в виду возможность передачи целевому объекту вместо ссылки на объект самого объекта. С самого начала CORBA позволяла передавать как аргументы операций такие типы данных, как структуры и массивы. Чтобы дать возможность объекту вызывать операции на других объектах, CORBA разрешала передавать ссылки на объекты в качестве аргументов. Это означало, что объект остается на клиенте, а серверное приложение формирует обратные запросы к этому объекту клиентского приложения. Нагрузка на ORB возрастает – проще передать сам объект на серверную сторону.

Для поддержки Передачи Объекту по Значению в IDL введено новое понятие – value type, нечто среднее между структурой и интерфейсом, так как поддерживает одновременно и данные, и операции над ними в стиле С++ и Java. Как и интерфейсы, valuetype поддерживает наследование (не множественное). Valuetype, который содержит только отдельные данные без операций, называется boxed valuetype (коробка). Абстрактный интерфейс – новая разновидность CORBA-интерфейса.

Когда valuetype передается как аргумент удаленной (вызываемой) операции, его копия создается в «принимающем» адресном пространстве. Эти копии полностью независимы от оригиналов, и операции на одной из них не оказывают никакого влияния на другую.Операции на valuetypes всегда локальны по отношению к процессу, в котором valuetype существует. В противоположность операциям вызова (invocations) на объектах CORBA, вызовы valuetype не порождают обратных откликов к клиенту и, следовательно, не нагружают сеть.

Что касается передачи данных valuetaype от клиента к серверу, то это действие ничем не отличается от передачи данных других типов и затруднений не вызывает. Однако необходимо передавать еще и операции, что не так просто, хотя бы потому, что клиент и сервер могут быть написаны на разных языках. В некоторых ситуациях до сих пор непонятно, как это сделать. Самый лучший случай (Си или С++), когда операции хранятся в форме DLL-библиотек, которые можно передать от клиента к серверу. Другая удобная ситуация, когда на сервере есть те же библиотеки, что и на клиенте и, следовательно, ему известны операции клиента. При использовании в качестве языка программирования Java и работе через Internet подгрузка операций на сервер осуществляется идеальным образом, в виде Java апплетов – просто и безопасно.

Работа над спецификацией Передачи Объекта по Значению продолжается. В настоящее время она чересчур громоздкая и неполная. Возможно, именно это является камнем преткновения для объектного подхода (как передать операции – действия, передавать данные уже научились). Еще одна беда – влияние нового подхода на сервисы CORBA. Их придется менять для передачи Объектов по Значению, особенно сервисы Безопасности,Транзакций и Жизненного Цикла.

Хотя я и старалась никого не запутать, у Вас, вероятно, возникло впечатление, что CORBA 3 – особа весьма загадочная. В утешение приведу некоторые размышления, которые позволят Вам не отвернуться от нее, а попробовать познакомиться поближе.

«А где же обещанное путешествие?» – спросит строгий читатель. Я уверена, что Вы обязательно отправитесь в путешествие с CORBA. Разработаете собственную грамотную, «уживчивую» систему, или будете использовать эту технологию в проектах по интеграции разнохарактерных программ, или, быть может, примете участие в развитии самих стандартов CORBA, используя свой бесценный опыт разработчика. Считайте эту статью вводным инструктажем перед дальней дорогой. Поэтому поменяем название: «Некоторые разъяснения перед путешествием с CORBA...»

Предыдующее       Следующее

Содержание