|
 |
вся информация
представленная в данном описании имеет гриф не секретно
(свободно распространяется имеет общий доступ). Все
программы представленные на сайте не проверялись
антивирусной программой и распространяются
абсолютно бесплатно
|
| |

|
|
|
Концептуальный фундамент технологии CORBA
Технология создавалась консорциумом OMG как универсальная
технология создания распределенных систем в гетерогенных средах.
OMG представляет собой некоммерческую организацию, являющуюся
содружеством разработчиков программного обеспечения и его
потребителей, объединивших свои усилия для создания спецификаций
этой технологии. В настоящий момент в OMG состоит более 800
членов, включая всех сколько-нибудь серьезных производителей
программного обеспечения (и даже c недавнего времени Microsoft).
Первая спецификация CORBA появилась в 1991 г. Новые возможности
официально считаются добавленными в CORBA в момент утверждения
соответствующей спецификации. Как правило, в разработке
спецификации участвуют крупнейшие специалисты в данной области.
Разработка реализации - задача конкретной фирмы. Обычно от
утверждения спецификации до появления высококачественной
реализации проходит довольно много времени - иногда несколько
лет. Общий знаменатель технологии - объявления на языке IDL,
который является сердцем CORBA с момента ее появления. (Существуют
три различных языка описаний с одним и тем же названием - OSF
IDL, Microsoft IDL и OMG IDL).
Выводы
Технология CORBA носит существенно более общий и универсальный
характер, чем COM, что заложено в ее фундаменте. Опережение
разработки спецификаций (по сравнению с реализациями) позволяет
добиться более связной, целостной и гармоничной системы. С
другой стороны, при разработке реального проекта нужно
предварительно убедиться, что высококачественная реализация того
или иного сервиса CORBA уже доступна (источниками проблем могут
служить, например, Persistence Service и Security Service).
Комплексность системы
В настоящий момент CORBA не имеет своей собственной компонентной
модели; работа над ней началась в 1998 г. и еще не завершена.
Это главный серьезный недостаток. Правда, он несколько
компенсируется наличием основанной на CORBA компонентной моделью
Enterprise JavaBeans, так что программисты на Java находятся в
привилегированном положении. Все остальное, что присутствует в
COM, имеется и в CORBA, и даже более того - за исключением
универсальной технологии доступа к БД. Опять-таки, Java-программисты
имеют преимущество и здесь - за счет наличия общей для Java
технологии доступа к данным JDBC.
Выводы
В настоящий момент COM более законченная система, но на более
низком уровне и при существенно большем количестве ограничений,
определяемых самой концепцией системы.
Используемые языки программирования
Под стандартом применительно к CORBA понимается то, что
официально утверждено консорциумом OMG. Надо сказать, что это
очень высокий уровень легитимности, так как авторитет OMG в
компьютерном мире чрезвычайно высок. В настоящий момент
стандартизовано отображение языка IDL на 6 языков
программирования - Ada, C, C++, Cobol, Java и Smalltalk.
Существуют также отображения на Pascal (точнее, Delphi), Perl,
Python и еще десяток языков
Наиболее используемыми языками в настоящий момент являются Java
(вследствие прекрасного взаимодействия Java-технологий, особенно
JDBC, RMI, JNDI и EJB, с CORBA), и C++ - как самый эффективный,
мощный и распространенный язык компьютерной индустрии.
Выводы
Обе технологии не испытывают особых проблем с точки зрения
взаимодействия с языками программирования. Некоторые
преимущества имеет CORBA - за счет более строгой стандартизации
и более богатого выбора доступных средств разработки.
Уровень абстракции
CORBA обеспечивает даже несколько более высокий уровень за счет
базировании технологии исключительно на языке описания IDL с
последующим отображением таких спецификаций на конкретный язык
программирования, а также некоторых возможностей, например,
автоматического (т.е. прозрачного для программиста)
распространения контекста транзакций
Выводы
Обе технологии реализуют примерно одинаковый и достаточно
высокий уровень абстракций.
Поддержка компонентной модели
Как уже говорилось, CORBA в настоящее время не имеет своей
компонентной модели. Пусть это не имеет практического значения
для Java-программистов, но в общем случае эта та область, где
OMG (и фирмам-производителям программного обеспечения) еще
предстоит серьезно поработать.
Выводы
Это та область, где COM пока имеет существенные преимущества по
сравнению с CORBA. C другой стороны, при разработке реальных
проектов использование на стороне сервера компонентов Enterprise
JavaBeans, построенных поверх инфраструктуры CORBA,
предоставляет разработчику значительные преимущества по
сравнению с компонентами ActiveX.
Универсальный протокол обмена
CORBA значительно более строго и формально подходит к механизмам
обмена и передаче данных. Определен протокол CORBA (General
Inter-ORB Protocol, GIOP) - и его реализация на базе протокола
TCP/IP (Internet Inter-ORB Protocol, IIOP). CORBA способна
передавать данные различных типов, включая структуры (struct) и
объединения (union), в том числе содержащие рекурсивные
определения. Предусмотрена система описания и контроля типов -
как на уровне IDL-деклараций, так и динамическая. Для каждого
языка используется свое отображение данных IDL. В версии 2.3
появился новый, заимствованный из RMI механизм передачи объектов
CORBA - так называемая "передача по значению
(objects-by-value)". В предыдущих версиях CORBA при вызове
удаленных методов объекты можно было передавать только по ссылке.
Выводы
CORBA предоставляет значительно больше возможностей, и эти
возможности строго формализованы - в противном случае было бы
невозможно обеспечить совместную работу различных средств от
различных производителей программного обеспечения.
Поддержка со стороны различных производителей и открытость
Ситуация с CORBA совершенно иная. CORBA является результатом
совместных усилий огромного числа фирм, среди которых Sun,
Oracle, IBM, Netscape/AOL, DEC/Compaq, JavaSoft, Borland/Visigenic
(в настоящий момент в связи со слиянием Inprise и Corel принято
решение о восстановлении имени Visigenic), BEA, Iona и многие
другие. Можно сказать, что все производители программного
обеспечения, которое должно функционировать на различных
платформах и под управлением различных операционных систем,
выбрали CORBA как стандартную инфраструктуру создания
программных продуктов. Естественно, все спецификации CORBA
являются полностью открытыми. В лагере сторонников CORBA
просматривается четкая тенденция к тесному взаимодействию и
некоторой унификации используемых технологий (в качестве примера
можно привести отказ Sun и ORACLE от создания собственного ORB и
лицензирование Visigenic VisiBroker).
Выводы
COM и CORBA имеют совершенно разный уровень открытости и
поддержки со стороны ведущих фирм в компьютерной индустрии
Развитость сервисной части
CORBA имеет очень развитую сервисную часть; например, только для
поиска серверных объектов по различным критериям можно
использовать 4 различных сервиса CORBA. Кроме того, OMG
стремится к максимальной стандартизации вспомогательных
возможностей CORBA
Выводы
CORBA предоставляет разработчикам существенно большие
возможности, чем COM, в области сервисов и вспомогательных
средств. С другой стороны, COM-программисты обычно не испытывают
какого-либо дискомфорта из-за их недостатка. Вследствие
ограниченности области применения COM объективно нет
необходимости в создании таких же развитых и универсальных
средств, как это совершенно необходимо для CORBA
Самодокументирование системы
CORBA имеет аналог библиотеки типов COM - это так называемый
Репозитарий Интерфейсов (Interface Repository). Чтобы оценить
принципиальную разницу в подходе CORBA по сравнению с COM,
достаточно сказать, что Репозитарий Интерфейсов CORBA сам
представляет из себя объект CORBA со всеми вытекающими из этого
возможностями. Помимо Репозитария Интерфейсов, CORBA использует
Репозитарий Реализаций (Implementation Repository), который
представляет из себя базу данных, содержащую информацию о
серверах приложений CORBA.
Выводы
Средства интроспекции (самодокументрования) CORBA значительно
более развиты, мощны, гибки и универсальны, чем аналогичные
средства COM. CORBA-программисты получают дополнительные
преимущества по сравнению со своими коллегами, работающими с
COM, при использовании Java (Java-технологии очень тесно связаны
с CORBA). Связано это с тем, что Java предусматривает свой
уровень интроспекции, дополнительный по отношению к CORBA.
Технология и описание проекта
Проект с использованием CORBA всегда начинается с написания
IDL-спецификаций (особый случай - использование Java, когда в
принципе возможно генерировать стандартный код CORBA
непосредственно на базе классов Java, хотя вряд ли это разумно
для больших проектов.). Эти IDL-спецификации прекрасно отражают
суть выполняемых действий с точки зрения функционирования
распределенной системы. Синтаксис OMG IDL очень похож на
синтаксис С++ (включая те же самые директивы препроцессора).
Таким образом, IDL-спецификации могут с успехом использоваться
как часть документации проекта.
Выводы
Описания OMG IDL более достоверны и существенно более наглядны,
чем описания Microsoft IDL, в роли существенной части
спецификации проекта.
Виды объектов
Понятие "объекта" в CORBA принципиально отличается от своего
COM-аналога. Объект CORBA не является переменной языка
программирования и в общем случае время его существования не
связано со временем работы серверных или клиентских приложений.
СORBA-объект не занимает никаких ресурсов компьютера -
оперативной памяти, сетевых ресурсов и т.п. Эти ресурсы занимает
только так называемый "сервант" (servant), который является "инкарнацией"
одного или нескольких CORBA-объектов. Именно сервант является
переменной языка программирования. Пока не существует сервант,
сопоставленный с конкретным объектом CORBA, этот объект не может
обслуживать вызовы клиентов, но, тем не менее, он существует.
Результатом создания объекта (при этом совершенно не обязательно
при этом создается и сопоставляется с этим объектом
соответствующий сервант!) является так называемая "объектная
ссылка" CORBA. Объектная ссылка сопоставлена с этим, и только с
этим объектом, и это сопоставление остается корректным в течение
всего срока существования CORBA-объекта (может быть, в течение
нескольких лет). Объектная ссылка CORBA правильно
интерпретируется ORB'ами от любого производителя программного
обеспечения. После уничтожения CORBA-объекта все объектные
ссылки на него навсегда теряют смысл. С помощью объектной ссылки
клиент вызывает методы объекта, при этом инкарнациями этого
объекта могут быть различные серванты (не более одного
одновременно), которые физически могут находиться даже на
различных компьютерах
Выводы
Объект COM может рассматриваться как достаточно примитивный
частный случай объекта CORBA - как по своим возможностям, так и
с точки зрения его цикла жизни. COM и CORBA предлагают
совершенно несопоставимые возможности по созданию и управлению
объектами, что жизненно важно для создания надежных и
масштабируемых приложений.
Способы взаимодействия
CORBA поддерживает статический и динамический способ организации
удаленных вызовов Под динамическим способом понимается подход,
когда проверка, реализует ли сервер нужный метод, а также все
необходимые действия по выполнению удаленного вызова выполняются
на этапе работы клиентского приложения, а не этапе его
компиляции. При статическом вызове эти действия выполняются
именно на этапе компиляции. Разумеется, статический способ
предпочтительнее во всех отношениях (когда он возможен вообще).
Выводы
Обе технологии предлагают примерно одинаковые возможности в этом
плане. CORBA имеет определенные преимущества при использовании
динамических вызовов за счет более развитых средств получения
информации о серверах (репозитарии интерфейсов).
Производительность
Для корректного сравнения CORBA и COM с точки зрения
производительности необходимо составить целую систему тестов.
Кроме того, необходимо учесть влияние использования того или
иного языка программирования. На основе информации, приводимой
Orfali и Harkey, а также результатов небольшого сравнительного
тестирования, проведенного самим автором обзора (использовался
Borland C++ Builder 4.0 и VisiBroker 3.3 для C++), можно сказать,
что CORBA демонстрирует даже несколько более высокую
производительность. Еще раз повторимся: производительность очень
сильно зависит от количества и типов аргументов методов (не
забывайте, что их нужно упаковать и передать по сети, а затем
распаковать), от выбранной модели управления потоками, от
используемых языков программирования (клиент и сервер при этом
не обязательно должны быть написаны на одном языке), от
конкретной реализации CORBA и многих других факторов.
Выводы
И COM, и CORBA демонстрируют примерно одинаковую (и очень
высокую) производительность. Для CORBA говорить о конкретных
цифрах можно только для конкретной реализации. В качестве
примера приведем следующий факт: Inprise/Visigenic Visibroker
прозрачным для разработчика образом работает по-разному в
зависимости от того, находятся ли клиентский и серверный объект
в одном адресном пространстве, в разных адресных пространствах,
но на одном компьютере, или на разных компьютерах.
Производительность при этом может отличается на порядок.
Масштабируемость
В отличие от COM, CORBA с самого начала рассматривалась как
технология создания масштабируемых систем. Разделение собственно
объектов CORBA и их сервантов, схемы соответствия между ними,
характеристики объектных адаптеров, модели управления потоками и
соединениями, схемы активации серверов приложений, универсальные
решения по сохранению состояния объектов, автоматическое
управление контекстом транзакций и безопасности - все это очень
способствует решению данной проблемы
Выводы
Масштабируемость системы во многом зависит от качества
разработки проекта, продуманности принимаемых решений и
квалификации менеджеров проекта и разработчиков. При сравнении
технологий можно говорить о предпосылках, способствующих (или,
наоборот, препятствующих) достижению нужных требований. При
прочих равных условиях CORBA имеет громадные преимущества по
cравнению с COM.
Устойчивость к сбоям
CORBA имеет несколько более высокий уровень устойчивости к сбоям
за счет большей изоляции клиентов и серверов, автоматического
сохранения состояния объектов, более мощной и продуманной схемы
управления транзакциями (включая автоматический откат транзакций
по тайм-ауту), а также автоматической привязки объектной ссылки
и конкретного объекта CORBA.
Обеспечение безопасности
С CORBA дела обстоят сложнее - главным образом, в силу того, что
ставилась задача создать универсальную систему безопасности,
которая могла бы использовать все основные существующие в этой
области технологии. Работа над Сервисом Безопасности (Security
Service) продолжалась в течение 2 лет, и ее спецификация была
принята в 1996 г. Она содержит около 250 страниц. Она позволяет
обеспечить уровень безопасности B2 (уровень, близкий к высшему
уровню защиты, который используется в государственных
учреждениях). Предусмотрена идентификация пользователя, списки
прав доступа к ресурсам, система аудита и многое другое.
Особенно приятно, что разработчик не должен явно
взаимодействовать с этим сервисом - это задача для ORB. Основная
нагрузка возложена на системных администраторов. Все это
прекрасно, но существует одна небольшая проблема - где взять
полномасштабную, высококачественную реализацию этого сервиса?
Такие реализации существуют (Gradient, Concept-5), но их
использование ограниченно за пределами США. Сервис безопасности
от Borland/Visigenic в этом году еще не появится (хотя работа
над ним идет).
Выводы
В настоящий момент для реальных проектов для обеих технологий
используются сходные решения в области обеспечения безопасности
(идентификация на уровне операционной системы и кодирование
информации с помощью SSL). Естественно, возможны варианты.
Потенциально CORBA предоставляет существенно большие возможности
- проблемы здесь организационного, а не концептуального
Взаимодействие с Internet
Спецификации CORBA не оговаривают использование Internet в
качестве особого случая. Интеграция CORBA и Internet выполняется
естественным образом - за счет использования протокола IIOP,
построенного поверх TCP/IP. URL-имена могут быть использованы в
качестве имен для Службы Именования CORBA. На практике
производители программного обеспечения предоставляют расширения
CORBA, упрощающие работу с Internet (VisiBroker URL Naming
Service) или решающие те или иные проблемы - например, "обход"
ограничений, накладываемых на апплеты Java, используемых в
качестве CORBA-клиентов (например, Borland/Visigenic GateKeeper)
Общие выводы
Несмотря на внешнюю похожесть, что вызвано общностью решаемых
задач, между COM и CORBA, пожалуй, больше различий, чем сходства.
В большинстве случаев либо нецелесообразно использовать CORBA (для
небольших и простых проектов под Windows просто по причине
относительно высоких затрат на приобретение программного
обеспечения, лицензий и пр.), либо практически невозможно
использовать COM (для сложных, масштабируемых, высоконадежных
проектов или просто при работе в гетерогенных средах, а не
только в Windows). Windows-приложения, ориентированные на
взаимодействие с Microsoft Office, всегда будут использовать
COM; проекты с использованием Java и любых Java-технологий (кроме
Microsoft J++), как говорится, "сам бог велел" строить на основе
CORBA. Во многих случаях выбор технологии диктует выбор той или
иной части проекта: если вы планируете работать, например, с
ORACLE 8i, то, безусловно, гораздо лучше ориентироваться на
CORBA. Область, где эти технологии реально конкурируют, на мой
взгляд, очень невелика.
Как нетрудно заметить, автор настоящего обзора является
сторонником CORBA, чего и желает всем своим читателям.
За дополнительной информацией обращайтесь в Interface Ltd.
 |
|
|
|
|