Document Object Model
- 1 year ago
- 0
- 0
COM ( англ. Component Object Model «объектная модель компонентов»; произносится как [ком]) — это технологический стандарт от компании Microsoft , предназначенный для создания программного обеспечения на основе взаимодействующих компонентов, каждый из которых может использоваться во многих программах одновременно . Стандарт воплощает в себе идеи полиморфизма и инкапсуляции объектно-ориентированного программирования . Стандарт COM мог бы быть универсальным и кроссплатформенным , но закрепился в основном на операционных системах семейства Microsoft Windows . В современных версиях Windows COM используется очень широко. На основе COM были реализованы технологии: Microsoft OLE Automation , ActiveX , DCOM , COM+ , DirectX , а также XPCOM .
Стандарт 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-контейнерами, и т. п.
Основным понятием, которым оперирует стандарт 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-компонентов.
Выпущенная в 1996 году технология DCOM ( англ. Distributed COM — распределённая COM) основана на технологии DCE/RPC (разновидности RPC ). DCOM позволяет COM-компонентам взаимодействовать друг с другом по сети . Главным конкурентом DCOM является другая известная распределённая технология — CORBA .
Как DCOM, так и CORBA решают задачу вызова метода объекта, расположенного на другой машине, а также передачу ссылки на объект с одной машины на другую.
Сетевой уровень DCOM называется ORPC (Object RPC) и является объектно-ориентированным расширением DCE RPC.
Технология DCOM обеспечивает базовые установки безопасности, позволяя задавать, кто и из каких машин может создавать экземпляры объекта и вызывать его методы.
Microsoft Transaction Server был включен в Option Pack для Windows NT4 еще в 1997 году.
В составе Windows 2000 была выпущена технология COM+ , которая являлась новой версией Microsoft Transaction Server.
Технология расширяла возможности разработчиков COM-компонентов, предоставляя им некоторые готовые услуги, например:
MTS/COM+ использовался внутри ряда версий веб-сервера MS IIS для загрузки и исполнения веб-приложений, как бинарных по технологии ISAPI , так и скриптовых по технологии ASP (сама asp.dll есть ISAPI-приложение).
COM+ объединяет компоненты в так называемые приложения COM+ , что упрощает администрирование и обслуживание компонентов. Безопасность и производительность — основные направления усовершенствований COM+. Некоторые идеи, заложенные в основу COM+, были также реализованы в Microsoft .NET .
В 2002 году была официально выпущена платформа Microsoft .NET , которая на сегодняшний день объявлена Microsoft рекомендуемой основой для создания приложений и компонентов под Windows. По этой причине в .NET включены и средства, позволяющие обращаться к компонентам COM из приложений .NET , и наоборот. По словам представителей Майкрософт, COM (точнее, COM+) и .NET являются отлично взаимодополняющими технологиями.
В 2009 году DComLab опубликовал коммерческий продукт ComBridge. При использовании ComBridge для работы по DCOM через интернет не требуется CIS, не используется 135 порт, в локальной сети не требуются настройки dcomcnfg. ComBridge встраивается в транспортный уровень DCOM, полностью выделяя весь трафик созданного объекта и всех полученных из него объектов в отдельный поток.
OPC (OLE for Process Control) — семейство программных технологий, предоставляющих единый интерфейс для управления объектами автоматизации и технологическими процессами. Многие из OPC-протоколов базируются на Windows-технологиях: OLE, ActiveX, COM/DCOM. Такие OPC-протоколы, как OPC XML DA и OPC UA, являются платформо-независимыми.
OLE ( англ. Object Linking and Embedding «связывание и встраивание объекта»; произносится [oh-lay], [олэй]) — технология связывания и внедрения объектов в другие документы и объекты, разработанные корпорацией Майкрософт.
OLE позволяет передавать часть работы от одной программы редактирования к другой и возвращать результаты назад. Например, установленная на персональном компьютере издательская система может послать некий текст на обработку в текстовый редактор, либо некоторое изображение в редактор изображений с помощью OLE-технологии.