.Net Remoting.
От: Joker3D Россия http://blog.trunin.com
Дата: 26.05.02 11:09
Оценка:
Столкнулся я тут с проблемой:
Хочу создать удаленно объект. Вычитал что есть Server-activated и Client-activated объекты.
С Server-activated я вроде разобрался:
На сервере ServerApp делаю класс RemoteServer, реализующий опубликованный в общей сборке Common интерфейс IServer.
Пишу и потом юзаю конфиг:
ServerApp.exe.config:
<configuration>
<system.runtime.remoting>
<application name="ServerApp">
<service>
<wellknown mode="Singleton" type="ServerApp.RemoteServer, ServerApp" objectUri="RemoteServer.soap" />
</service>
<channels>
<channel ref="http" port="8000" />
</channels>
</application>
</system.runtime.remoting>
</configuration>
На клиенте создаю объект так:
IServer myServ = ( IServer )Activator.GetObject( typeof( IServer ), "http://localhost:8000/ServerApp/RemoteServer.soap" );

Вопрос #1: КАК УКАЗАТЬ ЧТОБЫ УДАЛЕННО СТАЛ ЮЗАТЬСЯ ЗАРАНЕЕ СОЗДАННЫЙ НА СЕРВЕРЕ ОБЪЕКТ???

RemotingServices.Marshal( myServObj [,URI] ) почему то не работает,
вернее он просто генерит не тот URI который надо (надо "ServerApp/RemoteServer.soap" )и видимо поэтому для клиента создается новый объкт...


И еще, как бы сделать так чтобы создавались Client-activated объекты?
IServer myServ = ( IServer )Activator.CreateInstance( typeof( IServer ) ); не прокатывает... (видимо это просто аналог: IServer myServ = new IServer())
... даже если предварительно прописать и заюзать конфиг:

<configuration>
<system.runtime.remoting>
<application>

<client url="http://localhost:8000/ServerApp">
<wellknown type="Common.IServer, Common" url="http://localhost:8000/ServerApp/RemoteServer.soap" />
</client>

<channels>
<channel ref="http" />
</channels>

</application>
</system.runtime.remoting>
</configuration>

А во всех МСДН'овских примерах удаленно юзают класс, сборка которого полностью доступна на клиенте:
RemoteServer myServ = ( RemoteServer )Activator.CreateInstance( typeof( RemoteServer ) );
Это работает, но какой смысл в такой удаленной активизации если на клиенте есть полная имплементация всех методов???

Итак, вопрос #2: КАК УДАЛЕННО СОЗДАТЬ CLIENT-ACTIVATED ОБЪЕКТ ЕСЛИ НА КЛИЕНТЕ ДОСТУПНА ТОЛЬКО ИНФОРМАЦИЯ ОБ ИМПЛИМЕНТИРОВАННОМ В НЕМ ИНТЕРФЕЙСЕ?


Заранее огромное спасибо всем кто отзовется!
Konstantin Trunin
http://blog.trunin.com — эффективное управление людьми, проектами, собой
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.