Как работает MSXML? (Как работает внутрипроцессный COM-объект)

Я не эксперт в компонентной объектной модели (COM), но насколько я понимаю, она работает примерно так: программа A ("серверная" программа) предоставляет интерфейс COM, скажем, через файл TLB. Клиентская программа использует этот интерфейс и вызывает его функции (и все базовые функции выполняются для вас бесплатно). Таким образом, в этом случае, когда запущена программа "Сервер" и программа "Клиент" связывается с "Сервером" с помощью COM-объекта. Каждая из программ (процессов) имеет свое адресное пространство. Теперь с MSXML все немного по-другому. Насколько я понимаю, msxmlX.dll является COM-библиотекой, но, скажем, когда я неявно ссылаюсь на нее (используя msxmlX.h и msxmlX.lib) во время выполнения, она загружается в то же пространство памяти, что и мой исполняемый файл. Итак, в этом случае ПОЧЕМУ COM-объект используется, когда явно не происходит IPC (и msxml.dll, и "мое приложение" используют одну и ту же память и могут "общаться" так же просто, как вызов функции)???

1 ответ

Вы можете создавать COM-объекты либо в процессе, либо вне процесса, либо на другом компьютере полностью. Выбор зависит от ваших требований.

COM разработан, чтобы сделать программные компоненты многоразовыми и независимыми от языка. Это не просто механизм для облегчения IPC, как вы предполагаете.

Другие вопросы по тегам