Component Object Model (w skrócie COM ) to technika komponentów oprogramowania opracowana przez Microsoft i DEC , od 1994 roku, popularna w systemie Windows, a także dostępna w OpenVMS , Tru64 i innych systemach operacyjnych Unix . Używany do implementacji OLE i ActiveX , COM został zastąpiony od 2009 roku przez Microsoft .NET Framework . Technologie COM obejmują OLE , COM +, Distributed COM i ActiveX .
Component Object Model to specyfikacja stworzona przez firmę Microsoft , która opisuje, w jaki sposób program wykonywalny może zostać spakowany do obiektu przez programistę, umożliwiając wykorzystanie obiektu przez innych programistów. Specyfikacja COM opisuje interfejs programistyczny oraz sposób komunikacji między obiektami, który jest niezależny od języków programowania .
Jednym z celów COM jest ułatwienie tworzenia programów poprzez łączenie komponentów, przy czym każdy komponent może być aktualizowany lub ulepszany niezależnie od pozostałych. Jest to możliwe dzięki temu, że wszystkie komponenty można zmontować tą samą techniką. COM ujednolica sposób, w jaki składniki zapewniają swoją funkcjonalność oraz sposób, w jaki inne programy je znajdują i używają. Programy zgodne ze specyfikacją COM mogą być ponownie wykorzystywane w wielu językach programowania, takich jak C , Visual Basic , Java , Delphi , FoxPro lub COBOL .
Obiekt COM to zasadniczo program, który implementuje jeden lub więcej interfejsów programistycznych . Każdy interfejs to lista funkcji . Wszystkie interfejsy pochodzą z nazwanego interfejsu IUnknown. Obiekty COM mogą być implementowane przez pliki .exe lub .dll dla Microsoft Windows .
Interfejs IUnknownposiada trzy funkcje: QueryInterface, AddRefi Release. Funkcja QueryInterfaceumożliwia programowi zapytanie komponentu COM o charakterystykę interfejsu, który implementuje. Funkcje AddRefi Releasesłużą do informowania komponentu, że program ich używa. Kilka programów może jednocześnie korzystać ze składnika COM . Składnik COM jest wykonywany, gdy tylko program go używa, i zatrzymuje się automatycznie, gdy nie jest już używany przez żaden program.
Jednym z ojców tej technologii był Anthony Williams, który cenił ją w swoich książkach Object Architecture: Dealing With the Unknown - or - Type Safety in a Dynamically Extensible Class ( 1988 ) oraz On Inheritance: What It Means and How To Use It ( 1990) ).
Poprzednią zorientowaną obiektowo technologią firmy Microsoft było Object Linking and Embedding (OLE) 1.0, która została zbudowana w oparciu o dynamiczną wymianę danych (DDE) i została specjalnie zaprojektowana dla dokumentów złożonych (np. Gdy tabela jest wstawiana do dokumentu Worda zmiany wykonywane w tabeli Excel będzie propagowany w dokumencie Word). Zostało to wprowadzone przez Word i Excel w 1991 roku i Windows 3.1 rok później. Podobnie w 1991 roku, Microsoft wprowadził Visual Basic lub VBX , kontrole z Visual Basic 1.0.
W 1993 roku Microsoft wypuścił OLE 2 i stworzył COM jako model obiektowy dla OLE 2. Podczas gdy OLE 1 dotyczył głównie dokumentów złożonych, OLE 2 miał zająć się ogólnie komponentami oprogramowania. W 1994 roku kontrolki OLE (OCX) zostały wprowadzone jako następcy VBX. Jednocześnie Microsoft zdecydował, że OLE 2 będzie nazywać się po prostu OLE i że nie będzie już oznaczał akronimu, ale nazwę technologii składowych firmy.
Na początku 1996 roku Microsoft zmienił nazwy niektórych części OLE dotyczących Internetu , ActiveX i stopniowo wszystkie części OLE przechodziły pod znakiem ActiveX, z wyjątkiem komponentów tworzonych dla dokumentów tworzonych i używanych np. Przez Microsoft Office .
COM służy jako podstawa technologii OLE i ActiveX i jest dostępny w różnych językach programowania. Formanty Microsoft Foundation Classes (w skrócie MFC ) to obiekty COM, a Active Template Library to zestaw szablonów do tworzenia obiektów COM w języku C ++. DCOM i COM + to oprogramowanie usługowe, które rozszerza możliwości wykorzystania obiektów COM .
Java RMI , IBM SOM i CORBA to technologie podobne do COM . CORBA oferuje funkcjonalność podobną do COM / DCOM. Istnieje oprogramowanie mostkujące , które pozwala używać obiektu COM tak, jakby był obiektem CORBA lub odwrotnie.
Od 2003 r. Technologia .Net zastępuje technologię COM , oferuje wiele jej zalet, jednocześnie rozwiązując niektóre problemy. .Net i Visual Studio oferują różne możliwości wspólnego wykorzystania technologii COM i .Net. Obiekt COM może być użyty w programie .Net poprzez opakowanie, które nada mu wygląd obiektu .Net, a obiekt .Net może zostać użyty do zaimplementowania komponentu COM poprzez opakowanie, które nada mu wygląd składnika COM .
DCOM to oprogramowanie pośredniczące typu ORB : oprogramowanie silnika, które umożliwia obiektom działającym na komputerze wymianę usług z obiektami działającymi na innym komputerze. ORB używa się ORB wykonywany przez innego komputera. W szczególności pozwala programiście na korzystanie z obiektu bez względu na to, że znajduje się on na innym komputerze, DCOM automatycznie obsługuje komunikację między dwoma komputerami, w tym stosowanie protokołu Remote Procedure Call , uwierzytelnianie , serializację i wykorzystanie pamięci podręcznej .
COM + to zintegrowany pakiet oprogramowania składający się z COM , DCOM i Microsoft Transaction Server . Ta ostatnia implementuje środowisko wykonawcze dla komponentów COM z funkcjonalnością grupowania wątków i połączeń z bazą danych, a także funkcjonalnością automatycznego wykonywania dla komponentów COM . COM + zawiera urządzenie kontroli dostępu oparte na rolach , a do obsługi katalogu komponentów używana jest konsola. Po dodaniu do katalogu można z nich korzystać z innego komputera, a usługa zajmie się zatrzymaniem wykonywania komponentu w przypadku przedłużającej się nieaktywności. COM + jest włączony do systemu Windows 2000 .
OLE (do łączenia i osadzania obiektów ) ma na celu umożliwienie włączenia dokumentu do innego dokumentu. Ta funkcjonalność początkowo wykorzystuje technikę komunikacji między programami Dynamic Data Exchange (skrót DDE ).
Wersja 2.0 OLE nie korzysta już z techniki komunikacji DDE, a funkcjonalność jest zapewniana przez współdzielenie bloku danych między różnymi aplikacjami, dany blok jest obiektem COM . OLE pojemnik jest aplikacją, która może manipulować bloków OLE danych , oraz serwer OLE jest aplikacją, która może produkować OLE bloków .
OLE 2.0 wprowadza nową funkcję - Automatyzację - która umożliwia programowi instruowanie innego programu w celu wykonania operacji.
ActiveX to modne hasło odnoszące się do technologii mającej na celu przekształcenie stron internetowych w aplikacje, które zdaniem autora są szybsze niż te, które wykorzystują aplety Java . W rzeczywistości obiekty ActiveX są obiektami COM z pewnymi dodatkowymi funkcjami, które pozwalają na ich użycie w sieci. Nazwa ActiveX została wybrana, aby zdystansować się od funkcji łączenia i osadzania obiektów (angielski Object Linking and Embedding abr. OLE ), ponieważ cel formantów ActiveX nie ma już z tym nic wspólnego. Z technicznego punktu widzenia nie ma różnicy między obiektem COM a obiektem ActiveX : obiekt implementuje interfejsy IUnknownoraz IDispatchfunkcję QueryInterfacei funkcję DllRegisterServer.
Klasy CIM dziedziczone z klas bazowych schematu CIM definiują funkcjonalność COM. Pomiędzy nimi: