Введение

Распределенная компонентная объектная модель (DCOM) — это запатентованная технология Microsoft для связи между программными компонентами в сети компьютеров. DCOM, первоначально называвшийся "Network OLE", является расширением Microsoft COM и предоставляет базовую подсистему связи в инфраструктуре сервера приложений Microsoft COM+. Переход к распределенному COM был обусловлен широким использованием DCE/RPC (Distributed Computing Environment/Remote Procedure Calls) — в частности, усовершенствованной версии Microsoft, известной как MSRPC. В плане расширений, добавленных к COM, DCOM должен был решить следующие задачи:

Маршализация — сериализация и десериализация аргументов и возвращаемых значений вызовов методов при передаче по сети. Распределенный сборщик мусора — обеспечение освобождения ссылок, удерживаемых клиентами интерфейсов, в случае, например, сбоя клиентского процесса или разрыва сетевого соединения. Объединение значительного числа объектов в браузере клиента в единую передачу для минимизации использования пропускной способности. Ключевым фактором решения этих задач стало использование DCE/RPC в качестве базового механизма RPC, лежащего в основе DCOM. DCE/RPC имеет строгие правила относительно маршализации и ответственности за освобождение памяти. DCOM был основным конкурентом CORBA. Сторонники обеих этих технологий рассматривали их как будущую модель повторного использования кода и сервисов через Интернет. Однако трудности с обеспечением работы этих технологий через интернет-брандмауэры и на неизвестных, небезопасных машинах привели к тому, что обычные HTTP-запросы в сочетании с веб-браузерами оказались более востребованными. Microsoft в определенный момент попыталась устранить эти недостатки, добавив в DCE/RPC дополнительный HTTP-транспорт под названием ncacn http (Network Computing Architecture connection oriented protocol). DCOM был публично представлен в бета-версии для Windows 95 18 сентября 1996 года. DCOM поддерживается нативно во всех версиях Windows, начиная с Windows 95, и во всех версиях Windows Server, начиная с Windows NT 4.0.

Улучшения безопасности

В рамках инициативы, начатой в Microsoft как часть процесса безопасной разработки программного обеспечения для переработки небезопасного кода, DCOM претерпел значительные изменения, направленные на повышение безопасности, в Windows XP Service Pack 2. В ответ на уязвимость в системе безопасности, обнаруженную лабораторией Tencent Security Xuanwu в июне 2021 года, Microsoft выпустила обновления безопасности для нескольких версий Windows и Windows Server, усилив контроль доступа к DCOM.

Альтернативные версии и реализации

COMsource – это реализация DCOM на базе Unix, обеспечивающая взаимодействие между различными платформами. Исходный код проекта доступен вместе с полной документацией, достаточной для использования и разработки совместимой версии DCOM. COMsource был получен непосредственно из исходного кода Windows NT 4.0 и включает в себя исходный код службы реестра Windows NT. В 1995 году компании Digital и Microsoft объявили о разработке Affinity for OpenVMS (также известного как NT Affinity), целью которой было использование OpenVMS в качестве уровня хранения данных для клиент-серверных приложений Windows NT. В рамках этой инициативы в OpenVMS Alpha была добавлена реализация распределенной объектной модели компонентов (DCOM). Для поддержки DCOM, VMS была обеспечена реализация реестра Windows, аутентификация NTLM и подмножество API Win32, необходимых для работы COM. DCOM впервые был добавлен в OpenVMS V7.2 1 для платформы Alpha. Аналогичная реализация DCOM была добавлена в Digital Unix в рамках программы AllConnect.