Dotnet中 Remoting技术 简明扼要的介绍 1 - 3
传统分布式开发技术
COM
DCOM
DCOM + MTS 传统的COM+ 2000年随win2000发布。
Java里面的RMI和Cobar
MS推出DotNet的时候推出的2种分布式运用
WEB Service 方便 。弱点,慢,另外,必须要有web服务器(iis)。
如果分布运用只是部署在企业内部,不是非常适合。
Remorting
一、基础知识
A. 什么是 非可远程化的对象 (Non-remotable objects)
(一) CLR创建的运用程序,运行时 默认 是不能跨越应用程序域的边界的。
1. A运用程序里面的对象如何copy到B运用程序。
2. 或者说在B运用程序里面如何引用A运用程序。
B. 什么是 可远程化的对象 (Remotable objects)
就是在A运用程序域中产生的对象,在B运用程序域中可以调用,调用的方式有2中,可以在B运用程序域中获得A中的对象的 拷贝 or 引用。
实际Web Service 和.net remoting就是要产生这样的效果的方式。
实际中的Web Service在调用方所产生的代理类。就是一个对远程对象的引用。
C. 序列化 (Serializable objects)
(二) 使对象暂时保存到 文件 或者 流 中
(三) 可以 传递 拷贝 成为可能
D. 配置通用引用,也就是传引用 (MarshalByRef objects)
(一) 通过继承自System.MarshalByRefObject类实现。
二、Remoting概述 (Remoting in general)
(一) 需要有 客户端 和 服务器 ,客户端要能够连接到远程的组件所在的服务器。
(二) 服务器
1. 在通道上监听 (channel)
2. 发布服务。
3. 当客户端的请求到的时候生成对象 以 对远程的请求作出响应 ,作出服务。
(三) 客户端
1. 连接服务器
2. 请求服务器上某个具体的服务。
三、 写服务端
(一) 创建一个 继承自MarshalByRefObject 类的 程序集,里面提供所需的服务。
1. 和Web服务中 继承自System.Web.Services.WebService 类似。
(二) 开发一个 宿主应用程序 来监听客户端的连接请求。
1. 相对于web 服务里面的 IIS可以监听远程的调用请求。
四、设计和实现服务器端所要考虑的问题
(一) 通过什么信道 channel
(二) 选择适当的激活模式。
1. 服务器端激活模式: 服务器端 决定远程服务对象的创建和销毁。
2. 客户端激活模式:客户端代理类也就是客户端 决定远程服务对象的创建和销毁。
(三) 如何让客户端获取调用方式,也就是如何让客户端获取组件类元数据。
1. 传递整个组件类。
2. 传递接口。(组件类实现了接口)。
(四) 用什么作宿主程序,是配置到iis中,还是自己另外写。
五、信道 (channel)
(一) 在服务器和客户端之间传递数据的方式
1. 如果是 拷贝 的方式 : 传递是 远程对象 的 copy
2. 是 引用 的方式 : 传递的是消息。 客户端和服务器之间能够识别的某种消息格式。
(二) Remoting提供的通道类型。
1. 默认的2中 HTTP 和 TCP
2. 可以自定义其他的通道,提供了非常好的扩展性。
using System.Runtime.Remoting; using System.Runtime.Remoting.Channels; using System.Runtime.Remoting.Channels.Http; using System.Runtime.Remoting.Channels.Tcp; ChannelServices.RegisterChannel (new HttpChannel()); ChannelServices.RegisterChannel (new TcpChannel(4242)); |