<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://camokathomelab.servebeer.com/mediawiki/index.php?action=history&amp;feed=atom&amp;title=Component_Object_Model</id>
	<title>Component Object Model - История изменений</title>
	<link rel="self" type="application/atom+xml" href="https://camokathomelab.servebeer.com/mediawiki/index.php?action=history&amp;feed=atom&amp;title=Component_Object_Model"/>
	<link rel="alternate" type="text/html" href="https://camokathomelab.servebeer.com/mediawiki/index.php?title=Component_Object_Model&amp;action=history"/>
	<updated>2026-07-16T22:09:37Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.45.3</generator>
	<entry>
		<id>https://camokathomelab.servebeer.com/mediawiki/index.php?title=Component_Object_Model&amp;diff=38766&amp;oldid=prev</id>
		<title>imported&gt;Northgav в 09:38, 29 декабря 2025</title>
		<link rel="alternate" type="text/html" href="https://camokathomelab.servebeer.com/mediawiki/index.php?title=Component_Object_Model&amp;diff=38766&amp;oldid=prev"/>
		<updated>2025-12-29T09:38:03Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{нет сносок|дата=2011-04-11}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;COM&amp;#039;&amp;#039;&amp;#039; ({{lang-en|Component Object Model}} «модель компонентных объектов»; произносится как [ком]) — [[технология|технологический]] стандарт от компании [[Microsoft]], предназначенный для создания [[программное обеспечение|программного обеспечения]] на основе взаимодействующих компонентов, каждый из которых может использоваться во многих программах одновременно&amp;lt;ref&amp;gt;{{Cite web|url=https://docs.microsoft.com/ru-ru/windows/win32/com/component-object-model--com--portal|title=Технология COM|access-date=2022-01-26|archive-date=2022-01-26|archive-url=https://web.archive.org/web/20220126222559/https://docs.microsoft.com/ru-ru/windows/win32/com/component-object-model--com--portal|url-status=live}}&amp;lt;/ref&amp;gt;. Стандарт воплощает в себе идеи [[Полиморфизм (программирование)|полиморфизма]] и [[Инкапсуляция (программирование)|инкапсуляции]] [[объектно-ориентированное программирование|объектно-ориентированного программирования]]. Стандарт COM мог бы быть универсальным и [[Кроссплатформенность|кроссплатформенным]], но закрепился в основном на [[операционная система|операционных системах]] семейства [[Microsoft Windows]]. В современных версиях Windows COM используется очень широко. На основе COM были реализованы технологии: [[Microsoft OLE Automation]], [[Microsoft ActiveX|ActiveX]], [[DCOM]], &amp;#039;&amp;#039;COM+&amp;#039;&amp;#039;, [[DirectX]], а также [[XPCOM]].&lt;br /&gt;
&lt;br /&gt;
== История COM ==&lt;br /&gt;
Стандарт COM был разработан в [[1993|1993 году]] корпорацией Microsoft как основа для развития технологии [[Microsoft Object Linking and Embedding|OLE]]. Технология OLE 1.0 уже позволяла создавать т. н. «[[составной документ|составные документы]]» ({{lang-en|compound documents}}): например, в пакете [[Microsoft Office]] эта технология позволяла включать диаграммы [[Microsoft Excel]] в документы [[Microsoft Word]].&lt;br /&gt;
&lt;br /&gt;
=== Путаница в названиях ===&lt;br /&gt;
В [[1996 год]]у Microsoft попыталась переименовать технологию OLE в ActiveX, но это удалось лишь частично. Например, технология OLE позволяла создавать так называемые &amp;#039;&amp;#039;элементы управления OLE&amp;#039;&amp;#039; ({{lang-en|OLE Controls}}, или &amp;#039;&amp;#039;OCX&amp;#039;&amp;#039;) — повторно используемые элементы [[пользовательский интерфейс|пользовательского интерфейса]], которые были построены на стандарте COM. Эти элементы управления OLE были переименованы в &amp;#039;&amp;#039;элементы управления ActiveX&amp;#039;&amp;#039; ({{lang-en|ActiveX controls}}), хотя расширение [[файл]]ов «&amp;lt;code&amp;gt;.ocx&amp;lt;/code&amp;gt;» за ними осталось. Затем Microsoft стала активно продвигать ActiveX в [[Интернет]], включив поддержку элементов ActiveX в свой [[браузер]] [[Microsoft Internet Explorer|Internet Explorer]]. В результате название [[Microsoft Object Linking and Embedding|OLE]] осталось только за технологией составных документов и локальных внедряемых объектов, а сетевые OLE-объекты стали называть ActiveX.&lt;br /&gt;
&lt;br /&gt;
Некоторая путаница между понятиями OLE и ActiveX сохраняется и до сих пор, но речь идёт об одних и тех же COM-технологиях. Причём иногда даже путают понятия OLE и COM. Так, внедряемые OLE-объекты иногда называют COM-объектами, а OLE-контейнеры — COM-контейнерами, и т. п.&lt;br /&gt;
&lt;br /&gt;
== Поддержка в ОС Windows ==&lt;br /&gt;
* Windows 7, Windows 8, Windows Server 2008, Windows Server 2008 R2, Windows Server 2012 поддерживают COM+&amp;lt;ref&amp;gt;{{cite web|url=https://technet.microsoft.com/en-us/library/cc770344.aspx|title=Manage COM+ Applications|date=2013-02-22|publisher=Microsoft Corp.|website=Microsoft [[TechNet]]|access-date=2018-08-31|archive-date=2012-01-23|archive-url=https://web.archive.org/web/20120123025057/http://technet.microsoft.com/en-us/library/cc770344.aspx|url-status=live}}&amp;lt;/ref&amp;gt;.&lt;br /&gt;
* Для Windows Server 2012 R2 роль сервера приложений, которая реализует COM+, объявлена устаревшей и подлежащей удалению в будущих версиях&amp;lt;ref&amp;gt;{{cite web|title=Features Removed or Deprecated in Windows Server 2012 R2|url=https://technet.microsoft.com/en-us/library/dn303411.aspx|date=2016-08-31|publisher=Microsoft Corp.|website=Microsoft [[TechNet]]|access-date=2018-08-31|archive-date=2015-02-08|archive-url=https://web.archive.org/web/20150208014311/https://technet.microsoft.com/en-us/library/dn303411.aspx|url-status=live}}&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Принципы работы COM ==&lt;br /&gt;
Основным понятием, которым оперирует стандарт COM, является &amp;#039;&amp;#039;COM-компонент&amp;#039;&amp;#039;. Программы, построенные на стандарте COM, фактически не являются автономными программами, а представляют собой набор взаимодействующих между собой COM-компонентов. Каждый компонент имеет уникальный идентификатор ([[Globally Unique Identifier|GUID]]) и может одновременно использоваться многими программами. Компонент взаимодействует с другими программами через &amp;#039;&amp;#039;[[Microsoft Component Object Model interface|COM-интерфейсы]]&amp;#039;&amp;#039; — наборы абстрактных функций и свойств. Каждый COM-компонент должен, как минимум, реализовывать стандартный интерфейс «&amp;lt;code&amp;gt;IUnknown&amp;lt;/code&amp;gt;», который предоставляет базовые средства для работы с компонентом. Интерфейс «&amp;lt;code&amp;gt;IUnknown&amp;lt;/code&amp;gt;» включает в себя три метода: QueryInterface, AddRef, Release.&lt;br /&gt;
&lt;br /&gt;
[[Microsoft Windows API|Windows API]] предоставляет базовые функции, позволяющие использовать COM-компоненты. Библиотеки [[Microsoft Foundation Classes|MFC]] и, особенно, [[Microsoft Active Template Library|ATL]]/[[Microsoft Windows Template Library|WTL]] предоставляют более гибкие и удобные средства для работы с COM. Библиотека [[Active Template Library|ATL]] от Microsoft до сих пор остаётся самым популярным средством создания COM-компонентов. Но зачастую COM-разработка остаётся ещё довольно сложным делом, программистам приходится вручную выполнять многие рутинные задачи, связанные с COM (особенно это заметно в случае разработки на [[C++]]). Впоследствии (в технологиях COM+ и особенно {{nobr|[[Microsoft .NET|.NET]]}}) Microsoft попыталась упростить задачу разработки COM-компонентов.&lt;br /&gt;
&lt;br /&gt;
== Технологии, основанные на стандарте COM ==&lt;br /&gt;
&lt;br /&gt;
=== DCOM ===&lt;br /&gt;
{{main|DCOM}}&lt;br /&gt;
Выпущенная в [[1996|1996 году]] технология &amp;#039;&amp;#039;&amp;#039;DCOM&amp;#039;&amp;#039;&amp;#039; ({{lang-en|Distributed COM}} — распределённая COM) основана на технологии [[DCE/RPC]] (разновидности [[Remote procedure call|RPC]]). DCOM позволяет COM-компонентам взаимодействовать друг с другом по [[компьютерная сеть|сети]]. Главным конкурентом DCOM является другая известная распределённая технология — [[Common Object Request Broker Architecture|CORBA]].&lt;br /&gt;
&lt;br /&gt;
Как DCOM, так и CORBA решают задачу вызова метода объекта, расположенного на другой машине, а также передачу ссылки на объект с одной машины на другую.&lt;br /&gt;
&lt;br /&gt;
Сетевой уровень DCOM называется ORPC (Object RPC) и является объектно-ориентированным расширением DCE RPC.&lt;br /&gt;
&lt;br /&gt;
Технология DCOM обеспечивает базовые установки безопасности, позволяя задавать, кто и из каких машин может создавать экземпляры объекта и вызывать его методы.&lt;br /&gt;
&lt;br /&gt;
=== COM+ ===&lt;br /&gt;
Microsoft Transaction Server был включен в Option Pack для Windows NT4 еще в 1997 году.&lt;br /&gt;
&lt;br /&gt;
В составе [[Microsoft Windows 2000|Windows 2000]] была выпущена технология &amp;#039;&amp;#039;&amp;#039;COM+&amp;#039;&amp;#039;&amp;#039;, которая являлась новой версией Microsoft Transaction Server.&lt;br /&gt;
&lt;br /&gt;
Технология расширяла возможности разработчиков COM-компонентов, предоставляя им некоторые готовые услуги, например:&lt;br /&gt;
* автоматический пул [[поток выполнения|потоков]], создаваемый стандартным процессом-загрузчиком mtx.exe&lt;br /&gt;
* доступ к контексту, в котором выполняется компонент (например, компоненты, используемые в [[Microsoft Active Server Pages|ASP]], могут с этой возможностью получить доступ к внутренним объектам той страницы, на которой они выполняются).&lt;br /&gt;
* интеграция с транзакциями монитора MS DTC (контекст COM+ может автоматически содержать в себе транзакцию MS DTC)&lt;br /&gt;
&lt;br /&gt;
MTS/COM+ использовался внутри ряда версий веб-сервера MS [[IIS]] для загрузки и исполнения веб-приложений, как бинарных по технологии [[ISAPI]], так и скриптовых по технологии ASP (сама asp.dll есть ISAPI-приложение).&lt;br /&gt;
&lt;br /&gt;
COM+ объединяет компоненты в так называемые &amp;#039;&amp;#039;приложения COM+&amp;#039;&amp;#039;, что упрощает администрирование и обслуживание компонентов. Безопасность и производительность — основные направления усовершенствований COM+. Некоторые идеи, заложенные в основу COM+, были также реализованы в {{nobr|Microsoft .NET}}.&lt;br /&gt;
&lt;br /&gt;
=== .NET и будущее COM ===&lt;br /&gt;
В [[2002|2002 году]] была официально выпущена платформа {{nobr|Microsoft .NET}}, которая на сегодняшний день объявлена Microsoft рекомендуемой основой для создания приложений и компонентов под Windows. По этой причине в {{nobr|.NET}} включены и средства, позволяющие обращаться к компонентам COM из приложений {{nobr|.NET}}, и наоборот. По словам представителей Майкрософт, COM (точнее, COM+) и {{nobr|.NET}} являются отлично взаимодополняющими технологиями.&lt;br /&gt;
&lt;br /&gt;
=== DCOM через интернет и решение проблемы XP SP2 ===&lt;br /&gt;
&amp;lt;!--(значимость всего нижеперечисленного под сомнением, что за проблема XP SP2 — не понятно, еще в Windows 2000 DCOM умел использовать SOAP и HTTP вместо 135го порта).--&amp;gt;&lt;br /&gt;
В 2009 году DComLab опубликовал коммерческий продукт ComBridge. При использовании ComBridge для работы по DCOM через интернет не требуется CIS, не используется 135 порт, в локальной сети не требуются настройки dcomcnfg.&lt;br /&gt;
ComBridge встраивается в транспортный уровень DCOM, полностью выделяя весь трафик созданного объекта и всех полученных из него объектов в отдельный поток.&lt;br /&gt;
&lt;br /&gt;
=== OPC ===&lt;br /&gt;
[[OPC]] (OLE for Process Control) — семейство программных технологий, предоставляющих единый интерфейс для управления объектами автоматизации и технологическими процессами. Многие из OPC-протоколов базируются на Windows-технологиях: OLE, ActiveX, COM/DCOM. Такие OPC-протоколы, как OPC XML DA и OPC UA, являются платформо-независимыми.&lt;br /&gt;
&lt;br /&gt;
=== OLE ===&lt;br /&gt;
[[OLE]] ({{lang-en|Object Linking and Embedding}} «связывание и встраивание объекта»; произносится [oh-lay], [олэй]) — технология связывания и внедрения объектов в другие документы и объекты, разработанные корпорацией Майкрософт.&lt;br /&gt;
&lt;br /&gt;
OLE позволяет передавать часть работы от одной программы редактирования к другой и возвращать результаты назад. Например, установленная на персональном компьютере издательская система может послать некий текст на обработку в текстовый редактор, либо некоторое изображение в редактор изображений с помощью OLE-технологии.&lt;br /&gt;
&lt;br /&gt;
== Примечания ==&lt;br /&gt;
{{примечания}}&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
* [http://msdn.microsoft.com/en-us/library/aa139672.aspx Раздел разработки Win32 и COM в библиотеке MSDN]{{ref|en}}&lt;br /&gt;
* [http://msdn.microsoft.com/en-us/library/ms680573.aspx Раздел COM в библиотеке MSDN]{{ref|en}}&lt;br /&gt;
* [http://msdn.microsoft.com/en-us/library/ms685978.aspx Раздел COM+ в библиотеке MSDN]{{ref|en}}&lt;br /&gt;
* [http://msdn.microsoft.com/en-us/library/ms878122.aspx Раздел DCOM в библиотеке MSDN]{{ref|en}}&lt;br /&gt;
* [http://rsdn.org/summary/247.xml раздел COM/DCOM/COM+ на сайте RSDN]{{ref|ru}}&lt;br /&gt;
* [https://web.archive.org/web/20060615164055/http://www.objs.com/x3h7/ole2.htm Концепция COM]{{ref|en}}&lt;br /&gt;
* [http://www.graphcomp.com/info/specs/com/comch02.htm Программирование COM-интерфейсов]{{ref|en}}&lt;br /&gt;
* [http://www.developing.ru/com/ Подборка статей о COM]{{ref|ru}}&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
* {{книга&lt;br /&gt;
|автор = Роберт Дж. Оберг&lt;br /&gt;
|заглавие = Технология COM+. Основы и программирование&lt;br /&gt;
|оригинал = Understanding and Programming COM+: A Practical Guide to Windows 2000 First Edition&lt;br /&gt;
|ссылка = https://archive.org/details/understandingpro0000ober&lt;br /&gt;
|место =  М.&lt;br /&gt;
|издательство = [[Вильямс (издательство)|«Вильямс»]]&lt;br /&gt;
|год = 2000&lt;br /&gt;
|страницы = [https://archive.org/details/understandingpro0000ober/page/480 480]&lt;br /&gt;
|isbn = 0-13-023114-2&lt;br /&gt;
}}&lt;br /&gt;
* {{Книга|автор=Дейл Роджерсон|заглавие=Основы COM|издание=2-е изд}}&lt;br /&gt;
&lt;br /&gt;
{{Компоненты Microsoft Windows}}&lt;br /&gt;
&lt;br /&gt;
[[Категория:Технологии программного обеспечения Microsoft]]&lt;br /&gt;
[[Категория:Объектно-ориентированное программирование]]&lt;br /&gt;
[[Категория:Объектные модели]]&lt;br /&gt;
[[Категория:Брокер объектных запросов]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Northgav</name></author>
	</entry>
</feed>