Классификация приложений по отношению к технологии OLE (COM).
Технологию OLE часто в литературе называют и COM технологией. Классификация приложений в OLE – технологии определяется тем, что приложение может быть OLE – сервером или OLE – клиентом, кроме того, приложение может быть самостоятельным, либо присоединяемой библиотекой.
Сервер СОМ (или OLE) обычно представляет собой исполняемый файл (или динамическую библиотеку DLL), содержащий, по крайней мере, один объект COM. Различают три типа серверов:
· внутренние серверы (in-process) являются динамическими библиотеками, подключенными к приложению клиенту и работающие с ним в одном адресном пространстве;
· локальные серверы представляют собой отдельные приложения, работающие на том же компьютере, что и приложения клиенты. Локальный сервер в отличие от внутреннего сервера функционирует в собственном адресном пространстве, поэтому такие серверы называют внешними.
· удаленные серверы (remote) являются приложениями, функционирующими на другом по отношению к клиенту компьютере. Эти серверы поддерживают технологию DCOM.
Существует и другая классификация. В соответствии с ней если приложение является простым OLE-сервером (Server only Application), оно поставляет объектную модель, но не располагает встроенным языком обработки. Интеграция с таким приложением строится следующим образом: во втором приложении, которое является, как минимум, OLE-клиентом, на встроенном языке пишется программа, работающая с объектной моделью сервера. Сам простой сервер не может содержать никаких программ.
Приложение мини – сервер (Mimi server Application) – имеет OLE-объект, но может быть запущено только как часть приложения – клиента. Их называют и апплетами OLE и компонентами ActiveX.
Клиентом COM обычно называется приложение, из которого осуществляется доступ к объекту COM. Клиенты могут быть и динамическими библиотеками.
Приложение COM – клиент не имеет модели для своих данных, но может обращаться к приложениям-серверам с целью обработки их объектов. Приложения – контейнеры или приложения – клиенты (Container Application) – самостоятельное приложение, в которое можно внедрить или связать с ним объект OLE. Но приложение – контейнер не может создавать свои OLE – объекты. Иногда это – только язык, каким был, например, стандартный «сервер сценариев» в Windows. Следует заметить, что в настоящее время и у сервера сценариев есть объектная модель.
Если приложение является полным OLE-сервером (Full Server Application), то для описания данных оно предлагает объектную модель, а для работы со своими или внешними данными оно использует встроенный язык обработки, кроме того, это – самостоятельное приложение.
ActiveX объекты.
Технология ActiveX появилась как естественное развитие OLE – технологии, призванное решить проблему отсутствия приложения, поддерживающего требуемый объект. Как мы уже говорили раньше, можно было бы связаться с удаленным приложением, но это достаточно дорого и не всегда возможно.
Один вставляемый объект обычно не требует всей функциональности приложения – родителя, поэтому представляется возможным выделить нужную часть, и, объединив все это в объект, поставлять его не в виде самостоятельного приложения, а в виде присоединяемого модуля. Это и есть ActiveX объект или по ранее приведенной классификации внутренний сервер.
ActiveX объекты объединяются в библиотеки, файлы с расширением .ocx, и поставляются вместе с приложениями и самостоятельно. ActiveX объекты работают в адресном пространстве приложения – приемника, следовательно, обладают всеми его полномочиями в отношении к операционной системе и к другим приложениям.
Одним из достоинств операционной системы Windows является наличие единого набора элементов управления, доступного в разных приложениях. Этот инструментарий разработан как ActiveX объекты.
Название ActiveX объект определяется следующим: эти объекты появились как расширение (дополнение) стандартных (для Windows) элементов управления. То есть это – дополнительные реагирующие на действия пользователя объекты.
Следует заметить, что иногда названия ActiveX-объект и COM-объект употребляют как синонимы. По-видимому, это не совсем верно. COM-объект в отличие от ActiveX-объекта не реагирует на действия пользователей. Между этими понятиями часто возникает путаница. Когда это будет для нас важно, мы будем считать понятие COM объекта более широким, а ActiveX – частным. Разница заключается в двух характеристиках: 1) том, как эти объекты создаются и выполняются операционной системой – существенная характеристика; 2) ActiveX объектами мы будем называть действительно активные объекты, то есть, реагирующие на действия пользователя – менее существенная характеристика.
Подобное разделение терминов не является общепринятым, поэтому вы можете встретить в литературе вариант, при котором между этими понятиями нет различий (наиболее часто), либо вариант, при котором, наоборот, считается паонятие COM более узким.
А теперь попытаемся понять, в чем разница. ActiveX объект – это модуль, динамически присоединяемый к вашему приложению. Многие среды программирования предоставляют графический интерфейс для вставки этих объектов в проект, причем вам в программе не надо писать код, который занимается созданием экземпляров класса.
COM-объект – это, скорее внешний по отношению к вашему приложению объект. Его экземпляры следует создавать, пользуясь встроенными средствами такими, как NEW, CREATEOBJECT и т.п.