.Net Remoting 入门教程-原理&&Hello
??
.Net Remoting 入门教程-原理&&Hello
背景:学习WCF时,初学时总对这个通讯框架不能全局掌握,那么就需要庖丁解牛,理解WCF产生的一些历史背景,不乏.NET Remoting,Web Service,Enterprise Service,MSMQ等基础知识的灌输,这个系列我会逐一为大家阐述,最后进入基于WCF的多线程文件管理系统的设计,如有不妥,敬请斧正。 综述:.Net Remoting 可以用于访问另一个应用程序域(也可以是另一个服务器)中的对象,可以是进程间的,也可以是不同系统的进程间,这种CS的通讯机制更为快速,具体情况请听我盗来。 一、基本含义 l .Net Remoting 位于System.Runtime.Remoting 命名空间及其子命名空间下,用于跨网络通讯。 l .Net Remoting 提供了CS之间的紧密耦合,因为他们共享对象类型。 l .Net Remoting无法用于不同平台的交互性设计,如果需要交互设计,应使用Web服务。 l .Net 2.0中,可以获取由HttpChannel类,TcpChannel类和IpcChannel类代表的HTTP信道,TCP信道,IPC信道,还可以建立传输信道,以使用UDP,IPX,SMTP,共享的内存机制或消息队列。 l .Net Remoting 仅支持SAOP RPC 样式,Web 服务支持DOC样式和RPC样式。 l CLR Object Rmoting 是.Net Remoting 的一个重要方面。所有语言结构,例如委托,接口,方法,属性和字段等,都可以与远程对象一起使用。它可以处理激活、分布式验证、生存期和调用环境等方面的工作。 二、体系基础 l 远程对象:是运行在服务器端的对象,客户端不能直接调用。和本地对象的区分办法:每个从MarshalByRefObject派生的类不会离开它的应用程序域。客户端可以通过代理访问远程对象的方法。 l 信道:用于客户机和服务器的通讯。 l 消息:消息会被发送到信道。消息包括远程对象信息、被调用方法名以及所有参数。 l 格式标示符:定义消息如何传递到信道中的。SOAP格式标示符和二进制格式标示符。 l 格式标示符提供程序:用于把格式标示符和信道联系起来。 l 代理对象:分为透明代理和真实代理。客户调用有远程对象提供的方法,透明代理对象调用真实代理对象上的Invoke()。Invoke()使用消息接收器吧消息传给信道。 l 消息接收器:是一个截取器(Interceptor)对象。根据接收器的位置,把接收器分为:特使接收器(envoy sink)、服务环境接收器、对象环境接收器等。 l 激活器:客户机可以使用激活器在服务器上创建远程对象,或获取一个被服务器激活的对象的代理对象。 三、基本原理
.Net 2.0 中,提供了Soap格式标示符和二进制格式标示符,格式符是“可插入的”。信道负责链接到服务器的监听网络接口上,或者发送已格式化的数据。 服务环境接收器是一个接收器链,链中的最后一个接收器继续调用对象环境接收器链。 最后一个对象环境接收器调用远程对象上的方法。 单个服务环境接收器可以访问多个对象环境接收器。
四、简单示例 l 远程对象
1publicclassHello:MarshalByRefObject 远程对象一定要继承: MarshalByRefObject
l 服务器端 1
l 客户端 1classClient 简单的例子完成了。 http://www.cnblogs.com/winzheng/archive/2009/07/11/1521701.html 整个工程源码下载:源代码 五、 下一节,将会讨论如下议题: l 信道的功能和配置 l 格式标示符及其用法 l ChannelServices和RemotingConfiguration类 l 激活远程对象的不同方式,有状态,无状态对象 l 消息接收器功能 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- ruby-on-rails – Rails 4 – 在资源预编译在生产服务器上之
- ruby-on-rails – 如何从性能测试开始
- C中字符串文字的数据类型是什么?
- cocos2d-x-3.3-012-事件分发机制
- tinyxml使用:创建XML,遍历打印xml文件 select操作,获取单
- 详解vue中组件参数
- cocos2dx游戏-可爱的小精灵的各种用法大全
- 正则表达式30分钟入门教程 Java使用正则表达式
- Pytest学习(二十三)- allure 之 @allure.epic()、@allure
- W/ResourceType( 1356): Bad XML block: header size 144 o