Серверы внутрипроцессной обработки

Если вы реализуете приложение OLE-сервера в качестве внутрипроцессного сервера — библиотеку DLL, выполняющуюся в пространстве процесса приложения контейнера, а не в качестве локального сервера — EXE, работающего в собственном пространстве обработки, — взаимодействие между контейнером и сервером упрощается, так как обмен данными между ними может принимать форму обычных вызовов функций. Удаленные вызовы процедур не требуются, так как два приложения выполняются в одном пространстве процесса. Как ожидается, объекты, управляющие маршалингом параметров, также ненужны, хотя они могут быть агрегированы в библиотеке DLL без вмешательства в обмен данными между контейнером и сервером.

Если приложение OLE-сервера реализуется как сервер внутрипроцессного процесса, отдельный обработчик объектов не требуется, так как сам сервер находится в пространстве обработки клиента. Основное различие между сервером внутри процесса и обработчиком объектов заключается в том, что сервер может управлять объектом в состоянии выполнения, пока обработчик не может. Одним из последствий этого различия является то, что сервер должен предоставить пользовательский интерфейс для управления запущенным объектом, а обработчик делегирует это требование серверу объекта. При создании внутрипроцессного сервера можно агрегировать в обработчике OLE по умолчанию, позволяя обрабатывать базовые обязанности, такие как отображение, хранилище и уведомления при реализации только тех служб, которые обработчик либо не предоставляет, либо не реализует таким образом, как требуется.

Дополнительные сведения см. в следующих разделах:

Составные документы