Архитектура Microsoft Windows для разработчиков



              

Занятие 1. Архитектура СОМ - часть 3


Серверный объект — это часть кода, которая предоставляет сервисы клиенту. Доступ к сервисам осуществляется через интерфейсы СОМ, которые вызываются объектами-клиентами.

Сервисы реализуют два основных типа объектов СОМ: внутрипроцессные (in-process) и внешние (out-of-process). Первые — это библиотеки динамической загрузки, которые всегда выполняются локально. Вторые представляют собой исполняемые модули и могут работать как на локальном, так и на удаленном компьютере.

Интерфейсы СОМ

Возможности объектов СОМ доступны через интерфейс. Он представляет собой указатель (адрес памяти) на функции, вызываемые клиентом. Такое взаимодействие между пользователем сервисов объекта — клиентом — и сервером, реализующим объект и его сервисы, называется контрактом. Сервисы имеют и другое название — методы, или функции-члены. Контрактом между программными компонентами определяется:

  • уникальный идентификатор интерфейса, отличающий его от других;
  • местоположение функций в интерфейсе;
  • назначение функций;
  • аргументы и возвращаемые значения каждой функции.
  • Контракт не обязан указывать:

  • способ реализации функции;
  • код, составляющий функцию;
  • язык, использованный для создания объекта;
  • платформу, на которой выполняется объект.
  • Интерфейс не является ни объектом, ни классом (определением) объектов. Интерфейс — это абстрактный класс, который нужно проектировать исходя из возможного применения в самых разных контекстах. Например, простой интерфейс базового чтения-записи потоков данных подойдет для множества самых разных клиентов и типов объектов.

    Интерфейс IUnknown

    Объект СОМ имеет несколько интерфейсов, что позволяет обслуживать клиентов разных типов. Тем не менее все объекты СОМ поддерживают как минимум один стандартный интерфейс — I Unknown, который управляет всеми другими интерфейсами объекта. Этот интерфейс имеет три основных метода: AddRef, Release и Querylnterface (рис. 5.2).

    5-4.jpg

    Рис. 5.2 Интерфейс lUnknown

    • Метод AddRef реализует объект СОМ. При создании каждого экземпляра объекта значение счетчика ссылок для него увеличивается.


      Содержание  Назад  Вперед