Не понимаю удаленную активацию - PullRequest
2 голосов
/ 09 июля 2010

Я пробираюсь через .NET Remoting Overview на http://msdn.microsoft.com/en-us/library/kwdt6w2k(v=VS.71).aspx, и я не понимаю пару вещей, надеюсь, кто-то здесь может пролить свет.

ВПри создании раздела «Основное приложение .NET Remoting Remoting» описаны три сборки:

  1. - тип удаленного доступа, находящийся в библиотеке классов .DLL
  2. - хост-приложении со ссылкой набиблиотека классов remotable-type
  3. клиентское приложение

    Клиентское приложение содержит строку типа (C # здесь)

    RemotableType remotableObj = new RemotableType();

Чтобы эта строка компилировалась, клиентское приложение должно иметь ссылку на библиотеку классов remotable-type ... правильно?И, если он имеет эту ссылку на это определение типа, почему эта строка просто не создает экземпляр процесса RemotableType, как это было раньше?Я не понимаю, как экземпляр RemotableType загружается в домен приложения хост-приложения.

Пожалуйста, просветите (или направьте меня к более вводной ссылке?)

1 Ответ

1 голос
/ 09 июля 2010

Да, клиент должен иметь ссылку на сборку, содержащую информацию о типе удаленного класса.Стандартная практика заключается в создании отдельной сборки, которая содержит только интерфейс для удаленного класса.И клиент, и сервер ссылаются на сборку.Сервер содержит реализацию для удаленного класса, но клиент видит только интерфейс.

Причина, по которой клиент создает экземпляр удаленного объекта на сервере, связана с записями, содержащимися в файле app.config.

<configuration>
   <system.runtime.remoting>
      <application>
         <client 
            url = "http://www.cpandl.com"
            displayName="MyApplication"
         >
            <activated 
               type = "myClientActivatedType,myAssembly"
            />
         </client>
      </application>
   </system.runtime.remoting>
</configuration>

Ключевой информацией здесь является тег <activated>.См. статью для получения дополнительной информации.

...