Interested Article - Component Object Model

COM ( англ. Component Object Model «объектная модель компонентов»; произносится как [ком]) — это технологический стандарт от компании Microsoft , предназначенный для создания программного обеспечения на основе взаимодействующих компонентов, каждый из которых может использоваться во многих программах одновременно . Стандарт воплощает в себе идеи полиморфизма и инкапсуляции объектно-ориентированного программирования . Стандарт COM мог бы быть универсальным и кроссплатформенным , но закрепился в основном на операционных системах семейства Microsoft Windows . В современных версиях Windows COM используется очень широко. На основе COM были реализованы технологии: Microsoft OLE Automation , ActiveX , DCOM , COM+ , DirectX , а также XPCOM .

История COM

Стандарт COM был разработан в 1993 году корпорацией Microsoft как основа для развития технологии OLE . Технология OLE 1.0 уже позволяла создавать т. н. « составные документы » ( англ. compound documents ): например, в пакете Microsoft Office эта технология позволяла включать диаграммы Microsoft Excel в документы Microsoft Word .

Путаница в названиях

В 1996 году Microsoft попыталась переименовать технологию OLE в ActiveX, но это удалось лишь частично. Например, технология OLE позволяла создавать так называемые элементы управления OLE ( англ. OLE Controls , или OCX ) — повторно используемые элементы пользовательского интерфейса , которые были построены на стандарте COM. Эти элементы управления OLE были переименованы в элементы управления ActiveX ( англ. ActiveX controls ), хотя расширение файлов « .ocx » за ними осталось. Затем Microsoft стала активно продвигать ActiveX в Интернет , включив поддержку элементов ActiveX в свой браузер Internet Explorer . В результате название OLE осталось только за технологией составных документов и локальных внедряемых объектов, а сетевые OLE-объекты стали называть ActiveX.

Некоторая путаница между понятиями OLE и ActiveX сохраняется и до сих пор, но речь идёт об одних и тех же COM-технологиях. Причём иногда даже путают понятия OLE и COM. Так, внедряемые OLE-объекты иногда называют COM-объектами, а OLE-контейнеры — COM-контейнерами, и т. п.

Поддержка в ОС Windows

  • Windows 7, Windows 8, Windows Server 2008, Windows Server 2008 R2, Windows Server 2012 поддерживают COM+ .
  • Для Windows Server 2012 R2 роль сервера приложений, которая реализует COM+, объявлена устаревшей и подлежащей удалению в будущих версиях .

Принципы работы COM

Основным понятием, которым оперирует стандарт COM, является COM-компонент . Программы, построенные на стандарте COM, фактически не являются автономными программами, а представляют собой набор взаимодействующих между собой COM-компонентов. Каждый компонент имеет уникальный идентификатор ( GUID ) и может одновременно использоваться многими программами. Компонент взаимодействует с другими программами через COM-интерфейсы — наборы абстрактных функций и свойств. Каждый COM-компонент должен, как минимум, реализовывать стандартный интерфейс « IUnknown », который предоставляет базовые средства для работы с компонентом. Интерфейс « IUnknown » включает в себя три метода: QueryInterface, AddRef, Release.

Windows API предоставляет базовые функции, позволяющие использовать COM-компоненты. Библиотеки MFC и, особенно, ATL / WTL предоставляют более гибкие и удобные средства для работы с COM. Библиотека ATL от Microsoft до сих пор остаётся самым популярным средством создания COM-компонентов. Но зачастую COM-разработка остаётся ещё довольно сложным делом, программистам приходится вручную выполнять многие рутинные задачи, связанные с COM (особенно это заметно в случае разработки на C++ ). Впоследствии (в технологиях COM+ и особенно .NET ) Microsoft попыталась упростить задачу разработки COM-компонентов.

Технологии, основанные на стандарте COM

DCOM

Выпущенная в 1996 году технология DCOM ( англ. Distributed COM — распределённая COM) основана на технологии DCE/RPC (разновидности RPC ). DCOM позволяет COM-компонентам взаимодействовать друг с другом по сети . Главным конкурентом DCOM является другая известная распределённая технология — CORBA .

Как DCOM, так и CORBA решают задачу вызова метода объекта, расположенного на другой машине, а также передачу ссылки на объект с одной машины на другую.

Сетевой уровень DCOM называется ORPC (Object RPC) и является объектно-ориентированным расширением DCE RPC.

Технология DCOM обеспечивает базовые установки безопасности, позволяя задавать, кто и из каких машин может создавать экземпляры объекта и вызывать его методы.

COM+

Microsoft Transaction Server был включен в Option Pack для Windows NT4 еще в 1997 году.

В составе Windows 2000 была выпущена технология COM+ , которая являлась новой версией Microsoft Transaction Server.

Технология расширяла возможности разработчиков COM-компонентов, предоставляя им некоторые готовые услуги, например:

  • автоматический пул потоков , создаваемый стандартным процессом-загрузчиком mtx.exe
  • доступ к контексту, в котором выполняется компонент (например, компоненты, используемые в ASP , могут с этой возможностью получить доступ к внутренним объектам той страницы, на которой они выполняются).
  • интеграция с транзакциями монитора MS DTC (контекст COM+ может автоматически содержать в себе транзакцию MS DTC)

MTS/COM+ использовался внутри ряда версий веб-сервера MS IIS для загрузки и исполнения веб-приложений, как бинарных по технологии ISAPI , так и скриптовых по технологии ASP (сама asp.dll есть ISAPI-приложение).

COM+ объединяет компоненты в так называемые приложения COM+ , что упрощает администрирование и обслуживание компонентов. Безопасность и производительность — основные направления усовершенствований COM+. Некоторые идеи, заложенные в основу COM+, были также реализованы в Microsoft .NET .

.NET и будущее COM

В 2002 году была официально выпущена платформа Microsoft .NET , которая на сегодняшний день объявлена Microsoft рекомендуемой основой для создания приложений и компонентов под Windows. По этой причине в .NET включены и средства, позволяющие обращаться к компонентам COM из приложений .NET , и наоборот. По словам представителей Майкрософт, COM (точнее, COM+) и .NET являются отлично взаимодополняющими технологиями.

DCOM через интернет и решение проблемы XP SP2

В 2009 году DComLab опубликовал коммерческий продукт ComBridge. При использовании ComBridge для работы по DCOM через интернет не требуется CIS, не используется 135 порт, в локальной сети не требуются настройки dcomcnfg. ComBridge встраивается в транспортный уровень DCOM, полностью выделяя весь трафик созданного объекта и всех полученных из него объектов в отдельный поток.

OPC

OPC (OLE for Process Control) — семейство программных технологий, предоставляющих единый интерфейс для управления объектами автоматизации и технологическими процессами. Многие из OPC-протоколов базируются на Windows-технологиях: OLE, ActiveX, COM/DCOM. Такие OPC-протоколы, как OPC XML DA и OPC UA, являются платформо-независимыми.

OLE

OLE ( англ. Object Linking and Embedding «связывание и встраивание объекта»; произносится [oh-lay], [олэй]) — технология связывания и внедрения объектов в другие документы и объекты, разработанные корпорацией Майкрософт.

OLE позволяет передавать часть работы от одной программы редактирования к другой и возвращать результаты назад. Например, установленная на персональном компьютере издательская система может послать некий текст на обработку в текстовый редактор, либо некоторое изображение в редактор изображений с помощью OLE-технологии.

Примечания

  1. . Дата обращения: 26 января 2022. 26 января 2022 года.
  2. . Microsoft TechNet . Microsoft Corp. (22 февраля 2013). Дата обращения: 31 августа 2018. 23 января 2012 года.
  3. . Microsoft TechNet . Microsoft Corp. (31 августа 2016). Дата обращения: 31 августа 2018. 8 февраля 2015 года.

Ссылки

  • (англ.)
  • (англ.)
  • (англ.)
  • (англ.)
  • (рус.)
  • (англ.)
  • (англ.)
  • (рус.)

Литература

  • Роберт Дж. Оберг. = Understanding and Programming COM+: A Practical Guide to Windows 2000 First Edition. — М. : , 2000. — С. . — ISBN 0-13-023114-2 .
  • Дейл Роджерсон. Основы COM. — 2-е изд.
Источник —

Same as Component Object Model