基础知识: 在Remoting中是通过通道(channel)来实现两个应用程序域之间通信的
Remoting的通道有两种:TCP和HTTP,TCP通道提供了基于Socket的传输工具,使用Tcp协议来跨越Remoting边界传输序列化的消息流,TcpChannel使用二进制格式序列化消息对象。HttpChannel使用Soap格式来序列化消息对象,HttpChannel用Http协议使消息能在Internet上穿越防火墙传输序列化的消息流。 远程对象的激活方式:服务器端激活和客户端激活
服务器端激活又叫WellKnow,知名对象激活方式。
Remoting把服务器端激活又分为SingleTon模式和SingleCall模式两种
SingleTon模式:有状态模式,Remoting将为所有客户端建立同一个对象实例。
SingleCall模式:当客户端调用远程对象的方法使,Remoting为每一个客户端建立一个远程对象实例
客户端激活
Remoting在激活每一个对象的实例时,会给每个客户端激活的类型指派一个URI,来获取信道中的远程对象
在Remoting分布式程序中,通常包括三部分,远程对象、服务端、客户端,由于Remoting传输对象是序列化的引用方式,所以远程对象类必须要继承MarshalByRefObject类。
发起者和订阅者:消息由发起者发送,订阅者收到该消息后,激发事件。
2.程序结构与说明
1).总体思路客户端激活远程对象,然后用此远程对象订阅远程类的事件,当服务器调用远程类的方法发送消息后,客户端激活事件接收消息。
2)Common程序集该程序集属于公用的,定义了委托BroadCastEventHandler和接口IBroadCast。既要在服务器端部署,也要在客户端部署。客户端用GetObject()方法来激活远程对象,客户端获得IBradCast接口类型的远程对象代理
3)类EventWrapper 此类的实现方式完全和远程类的实现方式一样。在客户端注册事件后,用此类的委托来订阅远程事件,并激发此事件来接收消息