1.remoting的目的是让两个不同的应用程序域之间进行通讯。
2.remoting是通过通道来实现这个目的的。
3.通信的过程大致如此:客户端通过通道寻找服务器对象,服务器对象通过代理解析为客户端对象。
4.需要注意的是,代理解析的客户端对象是服务器对象的引用,所以在这之前必须序列化对象。
5.通道有两种:http通道和tcp通道。共同的接口:System.Runtime.Remoting.Channel里面定义了IChannel接口。
6.TcpChannel。System.Runtime.Remoting.Channel.Tcp。Tcp协议。默认二进制序列化对象。局域网中更多的使用这种通道。
7.HttpChannel。System.Runtime.Remoting.Channel.Http。默认soap系列化对象。如果要通过防火墙,更多的使用这种通道。
8.远程对象的激活方式。客户端获得远程服务器对象时必须先激活它。通过一个Activation进程来激活。方式分为两种:服务器端激活和客户端激活。
9.服务器端激活。又叫wellknow。我想这种方式类似于我们看电视。中央台在节目单里面告诉大家,今天早上9点,在中央五套,播出NBA总结赛第四场。如果有谁要看的话,到时候打开5套就可以看到了。类似的,服务器端公开一个URI(中央5套),并根据类型配置一个对象(NBA总决赛),客户端(观众)就可以通过代理(电视机),收到一个引用对象。
10.服务器端激活分为SingleTon(有状态)和SingleCall(无状态)两种。
11.客户端激活和SingleCall的区别。一.对象实例创建的时间不同。前者客户端一请求就建立。后者调用对象的方法时候才建立。二.前者有状态,生命周期可以自己定义。后者无状态,生命周期由GU管理。三.前者在客户端由CreateInstant()建立。并可以传递参数。后者getobject(),只能用默认的构造函数。
12.由于客户端调用的对象是引用对象,所以必须继承引用对象的基类:MarshalByRefObject。如果在远程类中还要调用或传递某些对象或者结构,必须序列化这些对象或结构。方式是加上[Serializable].最后将该远程对象编译成dll类库的方式,分别放到客户端和服务器端进行引用。
13.服务器端的实现分为三步:一.注册通道。二.注册远程对象。
14.客户端的实现分为两步:一.注册通道。二.获取远程对象。

下次将实际写服务器端实现和客户端实现的代码。

Posted on 2007-06-20 11:07  轻木剑  阅读(189)  评论(0编辑  收藏  举报