...
Здесь набор базовых классов обеспечивает, например, работу со строками, ввод-вывод данных, многопоточность. Набор классов для работы с данными предоставляют возможность использования SQL-запросов, ADO.Net и обработки XML данных и так далее.
Общеязыковая среда выполнения (Common Language Runtime, CLR) активизирует исполняемый код, выполняет для него проверку безопасности, располагает этот код в памяти и исполняет его, обеспечивает сборку мусора. Для обеспечения возможности многоязыковой разработки ПО программный код, получаемого после компиляции программы на одном из алгоритмических языков платформы MS.Net, представляется на общем промежуточном языке (Common Intermediate Language или CIL). Сборки (файлы на CIL) перед своим исполнением с помощью JIT-компилятора (Just-In-Time compilers) переводятся с программного кода на промежуточном языке (CIL-кода) в машинный (native) код платформы исполнения.
Объектная архитектура распределенных систем. Общие черты технологий CORBA и (D)COM.
- Предназначены для разработки сложных распределенных систем.
- Независимость от физического размещения объектов.
- Независимость от платформы (ОС).
- Независимость от языка программирования.
- COM и CORBA реализованы на базе абстрактного интерфейса, то есть языка, который реализует доступ к узлу.
- Объекты взаимодействуют друг с другом с помощью вызовов удаленных процедур (RPC, remote procedure call).
- Используются объекты, расположенные в адресных пространствах клиента и сервера и обменивающиеся данными между собой.
- Клиент и сервер взаимодействуют между собой с помощью marshalling, представляющего собой обмен данными (передаваемые данные упаковываются в так называемый marshalling packet и распаковываются после передачи в другое адресное пространство) и передачу указателей на интерфейсы и аргументы функций между этими объектами.
Объектные модели CORBA и COM. Основные различия.
- Тип объектов CORBA - типы его интерфейсов. В COM объект - это экземпляр класса. Базовый тип CORBA - CORBA::Object. Базовый тип COM - IUnknown.
- CORBA поддерживает множественное наследование. Один объект может иметь несколько интерфейсов. В COM каждый объект может иметь один интерфейс. В COM+ введено множественное наследование.
- В CORBA используется идентификация, в COM нет явной идентификации.
- В CORBA активация, сохранение и деактивация осуществляются неявно. В COM эти операции нужно выполнять явно.
- Язык описания интерфейса. В CORBA используется IDL (Interface Definition Language, язык описания интерфейсов). IDL - языковая среда без детальной реализации, напоминает C+, является компилируемым языком, поддерживает связь по данным с Delphi, Ada, Java, C, Cobol и так далее. IDL базируется на динамических вызовах удаленных процедур. В COM используется MIDL (Microsoft IDL). Язык MIDL привязан к платформе, является компилируемым языком, осуществляет поддержку связей c MJava, Visual C / C+, VB, используется в DLL.
- Отличаются структурой внутренних объектов (служб). CORBA: жизненный цикл, сохранение, контроль за доступом, защита, служба коллекции, импорт, экспорт, программируемые транзакции. COM: жизненный цикл, защита, информация о типах, передача данных, регистрация, асинхронное взаимодействие, битые пакеты не анализируются. СОМ-объекты можно создавать прямым вызовом специальных функций, но напрямую уничтожить его невозможно. Вместо прямого уничтожения используется механизм самоуничтожения, основанный на подсчете ссылок. В COM используется сервер транзакций.
- Платформы CORBA: DOS, Windows 3.11, Windows 98, Windows NT, OS / 2, Unix, Solaris. Платформы COM: Windows 2000, Windows XP, Windows 9x и Windows NT, OpenVMS, Solaris.
Идентификация объектов CORBA и COM в сети. Основные различия.
CORBA и СОМ абсолютно по-разному подходят к проблемам идентификации (identity) объектов и их сохранения в долговременной памяти (persistance). CORBA вводит понятие объектной ссылки (object reference), которая уникальным образом идентифицирует объект в сети. Тем самым экземпляру объекта дается право на существование в течение некоторого времени. Объекты могут активироваться, сохраняться в долговременную память, позже вновь реактивироваться и деактивироваться, и при этом объектная ссылка будет указывать все время на одно и то же конкретное воплощение объекта. Для объектов, предназначенных для длительного использования, объектные ссылки могут интегрироваться со службой каталогов или службой имен. Клиент не имеет никаких легальных средств обнаружить, куда и каким образом сохраняется экземпляр объекта. Служба именования Interoperable Naming Service предназначена для прозрачного поиска и вызова объектов, не зависящего от конкретной реализации ORB.
В СОМ понятие объектной ссылки отсутствует. Ближайший аналог - это механизм moniker, обеспечивающий преобразование символьного имени объекта в указатель интерфейса. Этот механизм действует для тех объектов, которые сохраняются в долговременной памяти. Два же активных объекта считаются идентичными, если для них совпадают указатели на интерфейс IUknown.
Для долговременного хранения в СОМ поддерживаются две модели. Первая и изначальная модель предоставляет клиенту возможность управлять хранением объекта. Другой, более поздний вариант сохранения в долговременную память в СОМ предусматривает использование Microsoft Transaction Server (MTS), который обеспечивает управление хранением со стороны сервера.
Языки описания интерфейсов CORBA и COM. Основные свойства.
В CORBA язык описания интерфейсов - важнейшая часть архитектуры, основа схемы интеграции объектов. Все интерфейсы и типы данных определяются на IDL. Различные языки программирования поддерживаются благодаря заданным отображениям между описаниями типов данных на IDL в соответствующие определения на конкретном языке. CORBA IDL задает определения, которые могут отображаться в множество различных языков, не требуя при этом никаких изменений от целевого языка. Эти отображения реализуются компилятором IDL, который генерирует исходные коды на нужном языке. В настоящий момент поддерживается отображение в C, C+, SmallTalk, Ada, Delphi, Visual Basic, Cobol и Java. Сам IDL синтаксически напоминает декларации типов в Си+, но не идентичен этому языку.
В Microsoft IDL (MIDL) - лишь один из возможных способов определения интерфейсов объекта. Технология COM реализует интеграцию на двоичном уровне, поэтому все спецификации и стандарты, относящиеся к уровню исходных текстов компонентов, являются вспомогательными и не оказывают решающего влияния на общую архитектуру системы. Язык MIDL привязан к платформе.
MIDL, являющийся расширением DCE RPC IDL, не определяет общего набора типов данных, доступных различным языкам программирования. На MIDL можно определить интерфейсы и типы данных, которые соответствуют программам на C, C++, Visual Basic, Java.
Основные встроенные объектные службы CORBA и COM.
Службы COM:
- защита (security),
- управление жизненным циклом (lifecycle managemеnt),
- информация о типах (type information),
- именование (naming),
- доступ к базам данных (database access),
- передача данных (data transfer),
- регистрация (registry),
- асинхронное взаимодействие.
Службы CORBA (16):
- именование (naming),
- события (events),
- жизненный цикл (life cycle),
- долговременное хранение объектов (persistent),
- транзакции (transactions),
- контроль за доступом к разделяемым ресурсам (concurrency control),
- отношения (relationsips),
- импорт / экспорт (externalization),
- запросы (query),
- лицензирование (licensing),
- свойства (property),
- время (time),
- защита (security),
- переговоры между объектами (object trader),
- сбор объектов (object collections),
- служба асинхронного обмена сообщениями (asynchronous messaging).
Операционные среды функционирования CORBA и COM. Выводы сравнительного анализа двух технологий.
- Обе технологии развиваются и усложняются.
- CORBA является более универсальной, чем COM, рассчитана на неоднородную сеть.
- CORBA соответствует распределенной системе отрасли, COM - рабочей группе.
- COM уступает CORBA в организации защиты, управлении транзакциями и координируемом распределении структур.
- Ряд продуктов позволяет использовать совместно эти технологии.