Component Object Model
COM (Component Object Model) — платформа компонентно-орієнтованого програмування розроблена в 1993 році компанією Microsoft; дозволяє використання міжпроцесної взаємодії (inter-process communication) та динамічного створення об'єктів у будь-якій мові програмування, що підтримує технологію. Використовується переважно у ОС Windows, хоча була реалізована на декількох платформах.
Стандарт COM був розроблений в 1993 році корпорацією Майкрософт як основа для розвитку технології OLE. Технологія OLE 1.0 вже дозволяла створювати так звані «складені документи» (англ. compound documents): наприклад, в пакеті Microsoft Office ця технологія дозволяла включати діаграми Microsoft Excel в документи Microsoft Word). Стандарт COM мав уніфікувати процес створення, впровадження і скріплення таких упроваджуваних об'єктів, а також стандартизувати розробку застосунків, що використовують упроваджувані об'єкти.
В 1996 році Microsoft спробувала перейменувати технологію OLE в ActiveX, але це вдалося лише частково. Наприклад, технологія OLE дозволяла створювати так звані елементи управління OLE (англ. OLE Controls, або OCX) — повторно використовувані елементи призначеного для інтерфейсу користувача, які були побудовані на стандарті COM. Ці елементи управління OLE були перейменовані в елементи управління ActiveX (англ. ActiveX controls), хоча розширення файлів «.ocx» за ними залишилося. Потім Майкрософт став активно просувати ActiveX в Інтернет, включивши підтримку елементів ActiveX в свій популярний браузер Internet Explorer. В результаті назва OLE залишилася тільки за технологією складених документів і локальних упроваджуваних об'єктів. А мережеві OLE-об'єкти стали називати по-новому — ActiveX.
Деяка плутанина між поняттями OLE і ActiveX зберігається досі, але мова йде про ті самі COM-технології. Причому, іноді навіть плутають поняття OLE і COM. Так, упроваджувані OLE-об'єкти іноді називають COM-об'єктами, а OLE-контейнери COM-контейнерами тощо.
Основним поняттям, яким оперує технологія COM, є COM-компонент. Програми, побудовані на технології COM, фактично не є автономними програмами, а є набором COM-компонентів, що взаємодіють між собою. Кожен компонент має унікальний ідентифікатор (GUID) і може одночасно використовуватися багатьма програмами. Компонент взаємодіє з іншими програмами через COM-інтерфейси — набори абстрактних функцій і властивостей. Кожен COM-компонент має, як мінімум, підтримувати стандартний інтерфейс «IUnknown», який надає базові засоби для роботи з компонентом.
Windows API надає базові функції, що дозволяють використовувати COM-компоненти. Бібліотеки MFC і, особливо, ATL/WTL надають набагато гнучкіші і зручніші засоби для роботи з COM. Бібліотека ATL від Майкрософт досі лишається найпопулярнішим засобом створення COM-компонентів. Але, часто, COM-розробка залишається ще досить складною справою, програмістам доводиться вручну виконувати багато рутинних завдань, пов'язаних з COM (особливо це помітно у разі розробки на C++). Згодом (у технологіях COM+ і особливо .NET) Майкрософт спробував спростити завдання розробки COM-компонентів.
Випущена в 1996 році технологія DCOM (англ. Distributed COM — розподілена COM) заснована на технології DCE/RPC (різновиди RPC) і є розвитком COM. DCOM дозволяє COM-компонентам взаємодіяти один з одним по мережі. Головним конкурентом DCOM є інша відома розподілена технологія — CORBA.
У складі Windows 2000 була випущена технологія COM+, яка розширювала можливості розробників COM-компонентів, надаючи їм деякі готові послуги, наприклад:
- покращену підтримку ниток;
- доступ до контексту, в якому виконується компонент (наприклад, компоненти, використані в ASP, можуть з цією можливістю дістати доступ до внутрішніх об'єктів тієї сторінки, на якій вони виконуються).
COM+ об'єднує компоненти в так звані застосунки COM+, що спрощує адміністрування і обслуговування компонентів. Безпека і продуктивність — основні напрями удосконалень COM+. Деякі ідеї, закладені в основу COM+, були також реалізовані в Microsoft .NET.
У 2002 році була офіційно випущена платформа Microsoft .NET, яка на сьогоднішній день оголошена Майкрософтом рекомендованою основою для створення застосунків і компонентів під Windows. З цієї причини в .NET включені і засоби, що дозволяють звертатися до компонентів COM із застосунків .NET, і навпаки. За словами представників Майкрософту, COM (точніше, COM+) і .NET є відмінно взаємно доповнюваними технологіями. Також було заявлено, що Windows Vista буде побудована з використанням технологій .NET і COM+.
- Сторінка COM на офіційному вебсайті корпорації Майкрософт [Архівовано 14 квітня 2011 у Wayback Machine.](англ.)
- Розділ COM в бібліотеці MSDN(англ.)
- Розділ COM+ в бібліотеці MSDN(англ.)
- Розділ DCOM в бібліотеці MSDN(англ.)
- Концепція COM(англ.)
- Програмування COM-інтерфейсів [Архівовано 21 лютого 2008 у Wayback Machine.](англ.)
- Підбірка статей про COM [Архівовано 17 лютого 2008 у Wayback Machine.](рос.)
Це незавершена стаття про Microsoft Windows. Ви можете допомогти проєкту, виправивши або дописавши її. |