Как Proxy создается для SAO, когда клиент и сервер совместно используют один и тот же интерфейс в Remoting - PullRequest
0 голосов
/ 18 июня 2009

Я сомневаюсь, что объект SAO. Например, У меня есть интерфейс ITest, который находится в ITestObj.dll и тест RemoteObject (который зарегистрирован как SAO), который реализует ITest на сервере с именем RemoteObject.dll. Теперь мой клиент просто использует ITestObj.dll и пытается создать прокси-объект, используя метод Activator. Согласно MSDN- GetObject или new можно использовать для активации сервера. Важно отметить, что удаленный объект не создается при выполнении любого из этих вызовов. На самом деле, сетевые вызовы вообще не генерируются. Инфраструктура получает достаточно информации из метаданных, чтобы создать прокси, вообще не подключаясь к удаленному объекту.

Почему Activator.GetObject может создать экземпляр Test и передать его как тип Itest клиенту без подключения к серверу?

Ответы [ 2 ]

0 голосов
/ 03 октября 2009

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

Обычно прозрачный прокси-сервер, созданный на клиенте, использует интерфейс для определения способа сериализации вызова на сервер.

Я не уверен, что объясняю это ясно, но, надеюсь, это поможет.

0 голосов
/ 19 июня 2009

Прокси не пытается подключиться к серверу, пока вы не сделаете вызов на объект. Поэтому, даже если сервер не работает, вы можете использовать Activator.GetObject (), чтобы получить ссылку на прокси на объекте.

Если вы вызываете метод для прокси-объекта, когда сервер не работает, вы получите исключение RemotingException.

...