Remoting配置记录

1.适用范围:
.Net平台下服务器数据通信,支持多信道如:http,tcp,icp,自定义信道
http:默认情况下80端口未被防火墙通过。
tcp:必须配置防火墙,在内部网中使用更加有效。
IPc:最适合在单个系统上进行跨进程的通信,使用WINDOWS跨进程通信机制,速度最快。

2.简单Remoting服务器配置
TcpServerChannel tcp =new TcpServerChannel(8086);;
HttpServerChannel Http=new HttpServerChannel(8087) ;
IpcServerChannel Ipc =new IpcServerChannel("icpServer");
ChannelServices.RegisterChannel(tcp, false);
ChannelServices.RegisterChannel(Http, false);
ChannelServices.RegisterChannel(Ipc, false);
//注:rc.Hello为一个类型:加上[Serializable] 并继承MarshalByRefObjectSingleCall:不保存客户对象,使用完即删除
Singleton:服务器的所有客户共享对象
RemotingConfiguration.RegisterWellKnownServiceType(typeof(rc.Hello), "hi", WellKnownObjectMode.SingleCall);

3.客户端调用
ChannelServices.RegisterChannel(new TcpClientChannel(), false);
rc.Hello hello = (rc.Hello)RemotingServices.Connect(typeof(rc.Hello), "tcp://192.168.1.12:8086/hi");


4.使用配置文件配置 remoting.config
rc.Hello表示类名,rc表示引用的dll名称
一。已知对象服务器端
1)

 

<configuration>
  
<system.runtime.remoting>
    
<application name="Hello">
      
<service>
        
<wellknown mode="SingleCall" type="rc.Hello,rc" objectUri="hi">          
        
</wellknown>
      
</service>
      
<channels>
        
<channel ref="tcp" port="8086" displayName="Tcp通道"></channel>
        
<channel ref="http" port="8087" displayName="http通道"></channel>
        
<channel ref="ipc" portName="8086" displayName="ipc通道"></channel>
      
</channels>
    
</application>
  
</system.runtime.remoting>
</configuration>

 

 

将上述文件保存为remoting.config
服务器端执行
RemotingConfiguration.Configure("Remoting.config"文件路径,false);

2)已知对象客户端

 

<configuration>
  
<system.runtime.remoting>
    
<application name="Client">
      
<service>
        
<client displayName="Hello client">
        
<wellknown type="rc.Hello,rc" url="tcp://192.168.1.12:8086/hi" />
            
</client>
        
</wellknown>
      
</service>
      
<channels>
        
<channel ref="tcp" displayName="Tcp通道"></channel>
      
</channels>
    
</application>
  
</system.runtime.remoting>
</configuration>

 

客户端执行
RemotingConfiguration.Configure("Remoting.config"文件路径,false);
二。客户激活的对象的服务器配置
1)服务器端

代码
<configuration>
  
<system.runtime.remoting>
    
<application name="Hello">
      
<service>
      
<activated type="rc.Hello,rc" />
      
</service>
      
<channels>
        
<channel ref="tcp" port="8086" displayName="Tcp通道"></channel>
        
<channel ref="http" port="8087" displayName="http通道"></channel>
        
<channel ref="ipc" portName="8086" displayName="ipc通道"></channel>
      
</channels>
    
</application>
  
</system.runtime.remoting>
</configuration>

 

2)客户端

代码
<configuration>
  
<system.runtime.remoting>
    
<application name="Client">
      
<service>
        
<client displayName="Hello client" url="http://192.168.1.12:8087/hi">
            
</client>
        
</wellknown>
      
</service>
      
<channels>
        
<channel ref="http" displayName="http通道"></channel>
      
</channels>
    
</application>
  
</system.runtime.remoting>
</configuration>

 


 

posted @ 2010-01-19 12:47  [静水流深]  阅读(2834)  评论(0编辑  收藏  举报