Component Object Model

Component Object Model eller COM är en plattformsoberoende och språkoberoende teknik för att kommunicera mellan objekt inom eller mellan program. För att ett klientprogram ska veta vilka funktioner som finns, definierar serverprogrammet ett gränssnitt som klientprogrammet måste känna till. Programmen kommunicerar sedan via detta gränssnitt.

COM-gränssnittet är en binär standard, vilket innebär att klienten får minnesadresserna till serverns funktioner, samt hur åtkomsten till dessa ska gå till. Det innebär att COM blir oberoende av språk och plattform. Det används dock mestadels i Windows, men möjlighet att köra under Linux/Unix finns. Även språkoberoendet ska tas med en nypa salt då det bäst implementeras under C++. Det går dock (med vissa begränsningar) även använda under andra språk såsom Visual Basic, Smalltalk, Java etc.

COM kan bara användas lokalt på en dator, men stöd finns för att kommunicera mellan datorer med hjälp av DCOM (Distributed COM).

Historia

COM är en utvidgning av OLE, Object Linking and Embedding, en teknik som introducerades i Windows 3.x. Mer specifikt bygger COM på OLE2, som var en radikal omarbetning av OLE1, som använde det meddelandebaserade systemet DDE. Tekniken introducerades 1995 som ett tillägg till Windows 95. Under åren som följde användes ibland namnet ActiveX för det som senare kom att kallas COM.

Versioner av COM

COM och .NET?

Kommer COM att dö ut i samband med .NET? Förmodligen inte under överskådlig tid då mycket av den funktionalitet som finns i COM/COM+ idag, såsom transaktionshantering, poolning av objekt etc, kan användas i .NET-komponenter. .NET-komponenter kan "registreras" som COM+ komponenter och vice versa vilket innebär att dessa två olika tekniker kan samexistera och dra nytta av varandra.

Produktstöd för COM

Idag finns det stöd för COM i Microsoft Windows 95/98/Me, Windows NT/2000/2003, Apple Macintosh samt flera varianter av Unix.

För att använda COM under Unix/Linux finns produkten EntireX som innehåller stora delar av WIN32API.

Tillämpningar av COM

  • OPC