• 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>


  • 相关阅读:
    【转】extern "C"的含义和用法
    python的shelve库
    【转】TCP是流传输协议,UDP是包传输协议
    【转】TCP慢启动、拥塞避免、快速重传、快速恢复
    【转】C/C++多线程编程中什么情况下需要加volatile?
    【转】C++对象是创建在堆上,还是在栈上?
    【转】腾讯高级工程师:一道面试题引发的高并发性能调试思考
    【转】C++类的sizeof大小
    【转】C编译器内存对齐
    【转】c++中使用memset初始化类对象
  • 原文地址:https://www.cnblogs.com/qingyi/p/1651418.html
Copyright © 2020-2023  润新知