Шаг 93 - Разница удаленного COM EXE и COM DLL

Мы уже с Вами разговаривали о нем в шаге "Шаг 43 - Как грузится COM (SCM) ?". И знаем что он этот SCM реализует доступ к информации об объекте. Так же он используется и в DCOM. Под контекстом выполнения можно понимать как место где выполняется приложение. Всего их четыре.

CLSCTX_INPROC_SERVER            DLL в адресном пространстве клиента
CLSCTX_INPROC_HANDLER           Дескриптор DLL
CLSCTX_LOCAL_SERVER             EXE выполняемый на машине клиенте
CLSCTX_REMOTE_SERVER    	EXE выполняется на машине отличной от клиента

С ЕХЕ файлами понятно, они умеют создавать процесс, а вот как поступать с DLL веть он может работать только в чьем-то процессе. Это то же предусмотрено. SCM запускает на удаленной машине некоторый свой процесс как псевдо COM сервер. Этот процесс по умолчанию запускается на основе файла dllhost.exe. При необходимости можно реализовать и свой процесс.

93_1.gif (1121 b)

Еще один необходимый для DCOM файл RPCSS.exe. DCOM требует, чтобы RPCSS был загружен, прежде чем он начнет обрабатывать запросы . Вы можете сами его запустить, поместить в автозагрузку или прописать по пути в реестре для автоматической загрузки. Естественно если по каким то причинам он у Вас не вызывается автоматически.

HKLM\Software\Microsoft\Windows\CurrentVersion\RunServices 
 					RPCSS="rpcss.exe"

Создание и использование DCOM на основе COM DLL несколько сложнее чем на основе COM EXE. В том виде в котором мы это реализовывали. Вывод отсюда простой. Если Вы хотите использовать DCOM максимально просто используйте COM EXE. А вот если в перспективе Вы захотите использовать MTS то выбор у Вас один это COM DLL.


Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем - 23.08.2001