Microsoft .NET Framework FAQ
Страница 5. Удаленные вызовы


 

Удаленные вызовы

Как взаимодействия внутри процесса и между процессами работают в CLR?

Есть два аспекта взаимодействия внутри процесса: между контекстами внутри одного домена приложения и между разными доменами приложений. Между контекстами внутри одного домена приложения, используются прокси. Нет маршаллинга и сериализации. Когда взаимодействие происходит между доменами приложений, то происходит маршаллинг и сериализация, используя бинарный протокол среды выполнения.
Межпроцессные взаимодействия используют блочный (pluggable) канал и протокол формата, каждый для определенных целей.

Если разработчик указывает конечную точку, с использованием утилиты soapsuds.exe для создания прокси, то HTTP канал и формат SOAP используются по умолчанию.
Если разработчик делает вызов в управляемом коде, то необходимо точно указать, какой канал и какой формат использовать. Это может быть определено административно, через файлы конфигурации, либо через вызовы API для загрузки определенных каналов. Есть следующие варианты:
HTTP канал с форматом SOAP (HTTP работает хорошо в Интернет, или в любом месте, где трафик должен идти через системы защиты)

TCP канал с бинарным форматом (TCP - более производительный вариант для локальных сетей)

Когда происходит переключение между управляемым и неуправляемым кодом, то используется инфраструктура COM/DCOM. В начальных вариантах CLR, он же использовался для вызова сервисных компонент (компонент, которые используют COM+ сервисы). В окончательном варианте, должна быть реализована возможность настраивать вызов любой удаленной компоненты.

Сборка мусора для арспределенных объектов, носит название "leased based lifetime." - договорной жизненный цикл. Каждый объект имеет оговоренное время, и когда это время истекает, то объект отсоединяется от инфраструктуры CLR. Объекты имеют по умолчанию время обновления - срок обновляется, когда происходит удачный вызов от клиента к объекту. Кроме того, клиент может непосредственно обновить договор.

 
« Предыдущая статья   Следующая статья »