2013-07-19 4 views
1

Я не являюсь экспертом в Component Object Model (COM), но из того, что, как я понимаю, работает примерно так: Программа A («серверная» программа) предоставляет интерфейс COM позволяет говорить через файл TLB. Клиентская программа использует этот интерфейс и вызывает его функции (и все основные вещи для вас бесплатны). Итак, в этом случае, когда запущена программа «Сервер», и программа «Клиент» связывается с «Сервером» с использованием COM-объекта. Каждая из программ (процессов) имеет собственное адресное пространство. Теперь с MSXML это немного отличается. Из того, что я понимаю, msxmlX.dll является COM-dll, но позволяет говорить, когда я неявно ссылаюсь на него (используя msxmlX.h и msxmlX.lib) во время выполнения, он загружается в то же пространство памяти, что и мой исполняемый файл. Итак, в этом случае объект WHY COM используется, когда явно нет IPC (как msxml.dll, так и «мое приложение» используют одну и ту же память и могут «обмениваться» так же просто, как вызвать функцию) ???Как работает MSXML? (Как работает COM-объект в процессе работы)

+1

COM-объект может жить в процессе, а затем им не потребуется ipc. COM абсолютно не прост, я могу только рекомендовать [Inside COM] (http://www.amazon.com/books/dp/1572313498), опубликованный MS (ISBN10: 1572313498 ISBN13: 9781572313491), который обрабатывает все, что вам нужно знать в подробно. – fvu

ответ

1

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

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