.NET简谈组件程序设计之(初识NetRemoting)
在本人的“.NET简谈组件程序设计之(初识远程调用) ”一文中,我们了解到什么是远程调用或者说在.NET平台上远程调用是什么样子的,可能和偏低层(Socket\Rpc)的远程调用有点距离。这只是系统为我们封装了假象而已,看不见不代表没有这逻辑,是为我们减轻了劳动负担。[王清培版权所有,转载请给出署名]
这篇文章我们来简单的了解一下在.NET平台上有一个强有力的远程调用武器,也是上一篇文章中我一笔带过的远程英雄.NetRemoting。
其实在.NET平台里面到处都能看见Remoting的影子,只不过我们平时都很少有机会与它接触,因为它通常工作于“后端”,躲在界面显示技术(如:Winform\Asp.net\Wpf.)
界面显示层是将信息以友好的方式展现在用户面前,但是真正的英雄通常都在背后默默的支持它,以更华丽的效果展现。(如:Thread\WebService\Remoting\Wcf...)。
其实在我们不断学习的过程中会慢慢的在我们脑海里浮现出我们所学习的东西的模型,比如我们是专研.NET这门技术,那么在我们脑子里是否已经有了一个简单而模糊的阴影,能看见这种阴影才证明我们刚刚入门。如果未曾有这种感觉,那么我们对他还是一无所知,所谓知己知彼方能百战百胜,说明我们还未入门。因为精通都是从模糊开始的,没有人一跃而过。(这只是本人对学习过程中的一点小小的感悟)
那么.NetRemoting是何许人也,它是什么?一般在哪里才能看见它?这篇文章就是来介绍这位大人物的。[王清培版权所有,转载请给出署名]
定义:.NetRemoting是.NET平台里面一个专门用来处理远程调用的框架,是已经为我们做好的、现成的框架,我们可以利用他来进行远程调用。
上面是我对他的一个简单的定义吧。上篇文章我简单的介绍了什么是远程调用,在.NET里面只要是跨AppDomain(应用程序域)的都属于远程调用,因为.NET在我们物理宿主进程里面又抽象了一个他自有的逻辑宿主。在操作系统看来,AppDomain是不存在的,但是在CLR看来它是存在的,我们的程序要想跑起来必须进过CLR的一系列的逻辑部署,也就是构造这么一个逻辑空间。[详情请看本人的“.NET简谈组件程序设计之(AppDomain应用程序域)”一文]
.NetRemoting基本结构
那么既然是框架它就肯定有一个结构,也就是他的工作原理。
在Remoting没有出来之前,如果不进过一番复杂的编写,我想夸AppDomain调用可能只局限于统一进程内了。(这句话可能会引起误会,我是说在.NET现有的框架基础上而言。)
然而有了Remoting之后,一切变的简单多了,我们只需要了解简单的网络原理、套接字原理、协议等等就能很好的配置这个框架,以进行远程调用。它将远程调用延伸到了任何地方,不只是在同一进程内了。
原有的同一进程内的远程调用框架没有变,Remoting只是添加了点东西以支持夸进程夸网络。(比如:RefObjet对象\RealProxy对象)
这是它的整体结构。客户端的调用将被转换成消息的传递,其实也就是对象的持久化过程,通过.NET序列化将对象状态保存在到另一端反序列化。
之前我说过Remoting是一个高扩展性的框架,从上图中我们可以看出它的基本结构是很清晰的、很模块化。都是通过接口关联,只要我们熟悉了之后就能切入自己的逻辑。[王清培版权所有,转载请给出署名]
.NetRemoting示例
在.NET里面不管是夸进程还是夸机器之间的AppDomain调用都是通过远程调用技术进行处理的。在同一个进程里面可能不会涉及到物理上的通讯,直接拿到代理就OK了,只是一些逻辑宿主之间的处理。
那么我们来看一个简单的示例:
1:对照上图,最下面的是关于通讯的端点,那么我们首先需要设置一个能够进行远程通讯的地址,在Remoting里面就是Channel(信道),消息从信道出去流线服务器端的信道。
在Remoting里面系统提供给了我们三种类型的信道,分别是Ipc\Tcp\Http。Ipc:是进程间调用用的,Tcp:是用TCP的协议来处理通讯,HTTP:是用HTTP协议来处理通讯。我们根据项目的需要可以进行设置。
代码注册信道:
- IDictionary dipropertis = new Hashtable();
- dipropertis["name"] = "Myserverchannel";//信道名称 &nbs
相关新闻>>
- 发表评论
-
- 最新评论 更多>>