.Net Remoting. Никак не пойму одну вещь...
От: AndreiK Россия  
Дата: 15.05.02 03:30
Оценка:
Здравствуйте все!
Помогите мне пожалуйста разобраться. Стал потихоньку смотреть .Net, экспериментирую с Remoting...
Итак:
Если я всё правильно понял, существует два способа активации: серверная и клиентская.
При серверной на сервере следует зарегистрировать тип вызовом RemotingConfiguration.RegisterWellKnownServiceType, затем, чтобы создать proxy на клиентской стороне, на клиенте сделать Activator.GetObject (либо всё то же но с помощью конфигурационных файлов).
При клиентской на сервере -- RemotingConfiguration.RegisterActivatedServiceType, на клиенте -- Activator.CreateInstance (либо RemotingConfiguration.RegisterActivatedServiceType, а потом new, либо опять же регистрировать с помощью конфигов и потом new).
При серверной активации объект работает в процессе сервера, вызов Activator.GetObject фактически создаёт proxy для серверного объекта. Здесь всё понятно. Всё зашибись работает.
Теперь вопрос. При клиентской активации мне не понятно. Почему процесс, в котором была выполнена регистрация сервера должен существовать, если активация клиентская? Оно работает только когда серверный процесс, в котором был выполнен вызов RemotingConfiguration.RegisterActivatedServiceType работает. Не понимаю тогда, причём тут клиентская активация, если процесс на сервере надо создать "ручками", т.к. именно там выполняется регистрация. Я же хочу сказать с клиента: "создай мне экземпляр такого-то класса вот там-то". .Net не может сам создать на сервере процесс и поместить в него экземпляр класса, а мне на клиента вернуть proxy (подобно тому, как мы делаем в DCOMе)? Как так сделать, подскажите, люди добрые... В какую сторону хоть глядеть? Или в .Net сплошные Web-сервисы и я принудительно должен класс-сборку как-нибудь хитро прорегистрировать на сервере или затащить куда (в IIS)? Не может быть чтобы было так неудобно... (Нет, понятно, когда я сознательно делаю Web-сервис, к которому обращаться собираюсь через SOAP, но "простое"-то обращение по TCP как сделать?) Может, с Global Assembly Cashe чего-нибудь шаманить надо, регистрировать как-то там? Но "указивок" на это дело в доке я что-то не увидал... Да и доки наидерьмовейшие, описания чересчур краткие, хрен чего найдёшь вообще, в примерах используются методы, каких вообще нету, и т.п.
Андрей Колчанов
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.