.NET Remoting RegisterWellKnownServiceType со специальным каналом, когда доступно несколько каналов - PullRequest
2 голосов
/ 02 марта 2012

Я хочу знать, можно ли зарегистрировать хорошо известную службу на удаленном сервере для определенного канала, а не для всех доступных каналов.

Мой код выглядит следующим образом:

Я создал 2 отдельных канала tcpchannel на удаленном сервере со следующим кодом

IDictionary rcProperties1 = new Hashtable();
rcProperties1["port"] = "1688";
rcProperties1["name"] = "tcp1";
TcpChannel tcp1 = new TcpChannel(rcProperties1, null, null);

IDictionary rcProperties2 = new Hashtable();
rcProperties2["port"] = "1689";
rcProperties2["name"] = "tcp2";
TcpChannel tcp2 = new TcpChannel(rcProperties2, null, null);

//--------------------------------------------------
// Register tcp channels
//--------------------------------------------------
ChannelServices.RegisterChannel(tcp1, false);
ChannelServices.RegisterChannel(tcp2, false);

Затем я разместил 2 удаленных объекта со следующими

Type rt = typeof(wxMessage);
RemotingConfiguration.RegisterWellKnownServiceType(
        rt, "Classes/wxMessage.rem", WellKnownObjectMode.Singleton);

rt = typeof(wxType);
RemotingConfiguration.RegisterWellKnownServiceType(
        rt, "Classes/wxType.rem", WellKnownObjectMode.Singleton);

На клиенте я вызываю удаленные объектычерез Activator.GetObject (...)

string uri = "tcp://localhost:1688/";

IConcrete1 objMessageRemote = (IConcrete1)Activator.GetObject(
        typeMessageLocal, uri + "Classes/wxMessage.rem");

IConcrete2 objTypeRemote = (IConcrete2)Activator.GetObject(
        typeTypeLocal, uri + "Classes/wxType.rem");

Дело в том, что не имеет значения, если я установлю порт uri на 1688 или 1689, я все равно могу получать удаленные объекты.

Я хочу, чтобы сервер размещал определенный объект в одном канале, а другой - в другом.Можно ли это сделать?

...