Distribuerad komponentobjektmodell - Distributed Component Object Model
Distributed Component Object Model ( DCOM ) är en patentskyddad Microsoft -teknik för kommunikation mellan mjukvarukomponenter på nätverksdatorer . DCOM, som ursprungligen hette "Network OLE ", utökar Microsofts COM och tillhandahåller kommunikationssubstratet under Microsofts COM + applikationsserverinfrastruktur.
Tillägget av "D" till COM berodde på omfattande användning av DCE / RPC (Distribuerad databehandlingsmiljö / Remote Procedure Calls) - mer specifikt Microsofts förbättrade version, känd som MSRPC .
När det gäller de tillägg som den lade till COM var DCOM tvungen att lösa problemen med
- Marshalling - serialisering och deserialisering av argumenten och returvärdena för metodanrop "över tråden".
- Distribuerad sopsamling - säkerställer att referenser som innehas av klienter av gränssnitt släpps när till exempel klientprocessen kraschade eller nätverksanslutningen förlorades.
- Det var tvungen att kombinera hundratals / tiotusentals objekt som hålls i klientens webbläsare med en enda överföring för att minimera bandbreddsanvändningen.
En av nyckelfaktorerna för att lösa dessa problem är användningen av DCE / RPC som den underliggande RPC-mekanismen bakom DCOM. DCE / RPC har strikt definierade regler för marshalling och vem som är ansvarig för att frigöra minne.
DCOM var en stor konkurrent till CORBA . Förespråkare för båda dessa tekniker såg dem som en dag bli modellen för kod och återanvändning av tjänster via Internet . Men svårigheterna med att få någon av dessa tekniker att fungera över Internet- brandväggar och på okända och osäkra maskiner gjorde att vanliga HTTP- förfrågningar i kombination med webbläsare vann över dem båda. Microsoft försökte vid ett tillfälle och misslyckades med att avhjälpa detta genom att lägga till en extra http-transport till DCE / RPC som heter ncacn_http (Network Computing Architecture-anslutningsorienterat protokoll). Detta återuppstod senare för att stödja en Microsoft Exchange 2003-anslutning via HTTP.
DCOM lanserades offentligt som en betaversion för Windows 95 den 18 september 1996.
DCOM stöds inbyggt i Windows NT 4.0, Windows 2000, Windows XP och Windows Server 2003, samt Windows 7, Windows 8, Windows 10, Windows Server 2008, Windows Server 2008 R2, Windows Server 2012, Windows Server 2012 R2 och Windows Server 2016.
Som en del av initiativet som började hos Microsoft som en del av Secure Development Lifecycle för att omorganisera osäker kod såg DCOM några betydande säkerhetsfokuserade förändringar i Windows XP Service Pack 2.
COM- källa: Källkoden är tillgänglig, tillsammans med fullständig och fullständig dokumentation, tillräcklig för att använda och implementera en interoperabel version av DCOM. Enligt den dokumentationen kommer COMsource direkt från Windows NT 4.0-källkoden och till och med innehåller källkoden för en Windows NT-registretstjänst .
1995 tillkännagav Digital och Microsoft Affinity for OpenVMS (även känt som NT Affinity) vilket var avsett att göra det möjligt för OpenVMS att fungera som uthållighetsskiktet för Windows NT -klientserverapplikationer . Som en del av detta initiativ lades en implementering av den distribuerade komponentobjektmodellen (DCOM) till OpenVMS Alpha. För att stödja DCOM försågs VMS med implementeringar av Windows-registret, NTLM- autentisering och en delmängd av Win32 API: er som behövs för att stödja COM. DCOM lades först till OpenVMS V7.2-1 för Alpha. En liknande implementering av DCOM lades till Digital Unix som en del av AllConnect-programmet.
Den Wine Team genomför också DCOM för binära ändamål interoperabilitet; de är för närvarande inte intresserade av nätverkssidan av DCOM, som tillhandahålls av MSRPC . De är begränsade till att implementera NDR (Network Data Representation) via Microsofts API, men har åtagit sig att göra det så kompatibelt som möjligt med MSRPC.
TangramCOM är ett separat projekt från Wine, med fokus på att implementera DCOM på Linux-baserade smartphones.
Den Samba Team genomför också DCOM för over-the-wire interoperabilitets syften: till skillnad från vin Team, de är för närvarande inte intresserad av binary-kompatibilitet, som genomförande Samba MSRPC är långt ifrån binärt kompatibla med Microsofts MSRPC.