一、编写步骤 第一步 编写一个DLL,其中包含所要Remottable的类
public class RemotableClass:MarshalByRefObject { … }
第二步 服务器进程注册该remotable 类以便其他应用程序可以激活。根据该对象是如何激活,服务器通 过两种静态方法来注册:RegisterActivatedServiceType或者RegisterWellKnownServiceType.下面 的语句使用RegisterWellKnownServiceType来注册RemotableClass,以便远程激活。
RemotingConfiguration.RegisterWellKnownServiceType( Typeof(RemotableClass), //Remotable类 "RemoteObject", // Remotable类的URI WellKnownObjectMode.SingleCall); //激活模式
第一个参数是指能远程化的类。
第二个是指客户端使用来激活对象的URI----也就是客户端告诉服务器来激活
RemotableClass实例的URI.
第三个参数指定激活模式。有两种选择。WellKnownObjectMode.SingleCall是指为客户端的每一次调用创建一个新的实例。 WellKnownObjectMode.Singleton是指创建一个RemotableClass实例来处理所有客户端的调用。
第三步 为了使客户端可以使用RemotableClass,服务器进程必须创建,注册一个通道。该通道提供对象和远程客户端交流的一个渠道。在服务器端,.NET框架提供了两种通道:
System.Runtime.Remoting.Channels.Tcp.TcpServerChannel:可以接受远程客户端的TCP连接。
System.Runtime.Remoting.Channels.Http.HttpServerChannel:接受HTTP连接。
下面的语句创建一个在1234端口监听的TcpServerChannel通道,并用。NET框架注册:
TcpServerChannel channel = new TcpServerChannel(1234);
ChannelServices.RegisterChannel(channel);
下面的语句注册了一个在1234端口监听的HTTP通道:
HttpServiceChannel channel = new HttpServerChannel(1234);
ChannelServices.RegisterChannel(channel);
TcpServerChannel更有效率一点。HttpServerChannel是使用IIS作为远程激活代理时使用的选择。
第四步 在客户端要想创建远程类的一个实例,也必须做一些注册。
发表回复