Rozproszony model obiektowy komponentów
Distributed Component Object Model ( DCOM ) to zastrzeżona technologia firmy Microsoft służąca do komunikacji między składnikami oprogramowania na komputerach w sieci . DCOM, który pierwotnie nosił nazwę „Network OLE ”, rozszerza COM firmy Microsoft i zapewnia podłoże komunikacyjne w infrastrukturze serwera aplikacji COM+ firmy Microsoft.
Rozszerzenie COM w Distributed COM wynikało z szerokiego wykorzystania DCE/RPC (Distributed Computing Environment/Remote Procedure Calls) – dokładniej ulepszonej wersji firmy Microsoft, znanej jako MSRPC .
Jeśli chodzi o rozszerzenia dodane do COM, DCOM musiał rozwiązać problemy:
- Marshalling - serializacja i deserializacja argumentów oraz wartości zwracanych wywołań metod „over the wire”.
- Rozproszone wyrzucanie elementów bezużytecznych – zapewnienie, że odwołania przechowywane przez klientów interfejsów zostaną zwolnione, gdy na przykład proces klienta ulegnie awarii lub połączenie sieciowe zostanie utracone.
- Łączenie znacznej liczby obiektów w przeglądarce klienta w jedną transmisję w celu zminimalizowania wykorzystania przepustowości.
Jednym z kluczowych czynników w rozwiązywaniu tych problemów jest użycie DCE/RPC jako podstawowego mechanizmu RPC stojącego za DCOM. DCE/RPC ma ściśle określone zasady dotyczące kierowania i kto jest odpowiedzialny za zwalnianie pamięci.
DCOM był głównym konkurentem CORBA . Zwolennicy obu tych technologii widzieli, że pewnego dnia staną się one modelem ponownego wykorzystania kodu i usług w Internecie . Jednak trudności związane z uruchomieniem którejkolwiek z tych technologii przez zapory internetowe oraz na nieznanych i niezabezpieczonych maszynach oznaczały, że zwykłe żądania HTTP w połączeniu z przeglądarkami internetowymi wygrały z obydwoma. W pewnym momencie firma Microsoft próbowała zaradzić tym niedociągnięciom, dodając dodatkowy transport http do DCE/RPC o nazwie ncacn_http (Network Computing Architecture zorientowany na połączenie protokół).
DCOM został publicznie uruchomiony jako wersja beta dla systemu Windows 95 18 września 1996 r.
Model DCOM jest obsługiwany natywnie we wszystkich wersjach systemu Windows, począwszy od systemu Windows 95, oraz we wszystkich wersjach systemu Windows Server od systemu Windows NT 4.0
Ulepszenia bezpieczeństwa
W ramach inicjatywy zapoczątkowanej w firmie Microsoft w ramach cyklu życia bezpiecznego programowania, mającej na celu przeprojektowanie niezabezpieczonego kodu, w systemie DCOM z dodatkiem Service Pack 2 dla systemu Windows XP dostrzeżono kilka znaczących zmian związanych z bezpieczeństwem.
W odpowiedzi na lukę w zabezpieczeniach zgłoszoną przez Tencent Security Xuanwu Lab w czerwcu 2021 r. Microsoft wydał aktualizacje zabezpieczeń dla kilku wersji systemu Windows i Windows Server, utrudniając dostęp do modelu DCOM.
Alternatywne wersje i implementacje
COMsource to oparta na Uniksie implementacja DCOM, umożliwiająca interoperacyjność między różnymi platformami. Dostępny jest jego kod źródłowy wraz z pełną i kompletną dokumentacją, wystarczającą do wykorzystania, a także zaimplementowania interoperacyjnej wersji DCOM. COMsource pochodzi bezpośrednio z systemu Windows NT 4.0 i zawiera kod źródłowy usługi rejestru systemu Windows NT .
W 1995 roku Digital i Microsoft ogłosiły Affinity for OpenVMS (znane również jako NT Affinity), które miało pozwolić OpenVMS służyć jako warstwa trwałości dla aplikacji klient-serwer Windows NT . W ramach tej inicjatywy do OpenVMS Alpha dodano implementację Distributed Component Object Model (DCOM). Aby obsługiwać DCOM, VMS został wyposażony w implementacje rejestru systemu Windows, NTLM i podzbiór interfejsów API Win32 potrzebnych do obsługi modelu COM. DCOM został po raz pierwszy dodany do OpenVMS V7.2-1 dla wersji alfa. Podobna implementacja DCOM została dodana do Digital Unix w ramach programu AllConnect.
TangramCOM był odrębnym projektem od Wine, skupiającym się na implementacji DCOM na smartfonach z systemem Linux.