Remoting 简单配置(可通讯)

1 服务端

<configuration>
<system.runtime.remoting>
<application>
<channels>
<channel ref="tcp" port="8086"/>//端口注册成功,telnet可以通
</channels>
<service>
<wellknown type="a 类名(加命名空间),包含此类的程序集名称" objectUri="b 客户端访问时的url对象名称(用类名即可)" mode="SingleCall" />//type 为类型的限定名称,
</service>
</application>
</system.runtime.remoting>
</configuration>

//服务端注册 保证程序集合处在服务程序目录中,(项目不添加程序集的引用也可以)

 System.Runtime.Remoting.RemotingConfiguration.Configure(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile, false);

2 客户端

<configuration>
<system.runtime.remoting>
<application>
<client ref="tcp">//通道保持一致
<wellknown type="c 类名(加命名空间可以是接口),包含此类(接口)的程序集名称" url="d tcp://localhost:8086/服务器Url中的对象名称" />
</client>
</application>
</system.runtime.remoting>
</configuration>

 System.Runtime.Remoting.RemotingConfiguration.Configure(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile, false);

Activator.GetObject(e Type type,f string url);//创建对象

几点:

1 服务端注册a类型,注册成功的条件type中类名和程序集必须正确,且程序集存在执行目录中。

2 客户端注册c类型,注册成的条件type中的类(接口)名和程序集必须正确,且程序集存在执行目录中。

3 客户端和服务器能通讯条件,通道类型和端口必须一致

4 客户端能创建正确的代理对象添加,通讯正常的情况先,服务器中objurl和客户端url中的url对象名称必须一致。

Activator.GetObject(e Type type,f string url);//根据类型c创建类型a对象

通过e的类型(既客户端c类型)和f的url(既客户端d),访问到服务器 b的url从而找到 a的类型并创建对象。