Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпоры ТП!!.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
458.75 Кб
Скачать

41. Основные понятия сом-технологии.

Технология COM позволяет создать и использовать программные компоненты, представляющие различные сервисы другим приложениям, компонентам и ОС. COM является одной из реализаций распределенных вычислений, которые базируются на предоставлении возможности приложениям использовать для расширения своих функциональности готовые компоненты и объекты.

Согласно COM технологии ОО подход используется не в рамках одного приложения, а в рамках ОС. В отличие от стандартных классов, определенных в исходном тексте и реализуемых как объекты в адресном пространстве одного процесса, COM объекты могут располагаться в адресных пространствах разных процессов. В настоящее время существует 3 спецификации COM:

1) OLE документы – составные документы, содержащие внедренные или связанные объекты, которые создаются через контейнеры «с активизацией по месту».

2) OLE Automation – данная спецификация описывает принцип создания сервера и контролера, управляющего его поведением с помощью скриптов или макросов. Имеет смысл только при разнесении адресных пространств клиента и сервера. Управление сервером осуществляется через обращение к его методам со стороны других объектов (COM-контроллеров).

Каждый COM-сервер и каждый класс COM-объектов обладают уникальным 128‑битным идентификатором. В общем случае COM-сервер – приложение, которое создает COM-объект и делает его доступным для других программ.

3) управляющие элемент Active X, использующие специальный вариант протокола автоматизации. Это библиотеки, содержащие исполняемый код. Из них можно создавать готовые приложения или увеличивать функциональность существующих (языки программирования могут быть разные). Создаются в том случае, когда их функциональность уникальна и в дальнейшем планируется использовать иную среду разработки.

Этапы разработки: создать элемент ActiveX-control; задать его имя, имя модулей и базовый класс, на основе которого создается элемент; дополнить свойства и методы необходимой реализацией; откомпилировать проект; зарегистрировать элемент ActiveX; протестировать (желательно в иной среде разработки).

Сервер автоматизации предлагает для доступа объект специального типа dispatch object. При этом в адресном пространстве приложения контроллера присутствует вариантная переменная, предоставляющая доступ к объекту на сервере. Этапы разработки сервера автоматизации (СА): 1) Создается обычное приложение, подлежащее автоматизации. 2) В приложение добавляется описание класса COM-объектов, созданных этим приложением для осуществления доступа к функциям сервера. 3) Приложение превращают в СА с помощью элемента Automation Object. Определяется имя класса, интерфейс, свойства и методы COM-объекта. 4) Определяется код для реализации методов объекта автоматизации. 5) Компиляция и запуск приложения, который приводит к регистрации созданного COM-сервера в системном реестре.

Схема удаленного запуска СА (в случае, когда COM-сервер и COM-контроллер физически разделены). Proxy – представитель сервера в адресном пространстве клиента. Stub – представитель клиента в адресном пространстве сервера, который содержит реальный указатель на интерфейс.

Stub и Proxy соединяются между собой, используя технологию удаленного вызова процедур RPC. Proxy не содержит реализации интерфейса; все аргументы вызываемых функций помещаются в пакет, передаваемый Stub объекту. Этот объект распаковывает переданные аргументы, помещает в стек и обращается к реальному объекту, используя существующий указатель на интерфейс. Результат выполнения упаковывается пакет и посылается Proxy-объекту, который распаковывает его и передает клиенту.

Дополнительно на сервере размещается специальный резидентный процесс SCM, который осуществляет запуск сервера и возвращает указатель на интерфейс клиентскому процессу. SCM отвечает за безопасность сервера и требует предварительной регистрации клиента на сервере.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]