2024年5月25日发(作者:)
第
54
章
.NET Remoting
本章内容:
● .NET Remoting概述
● 把具有类似执行要求的对象组合在一起的上下文
● 实现一个简单的远程对象、客户端和服务器
● .NET Remoting体系结构
● .NET Remoting配置文件
● 在中驻留.NET Remoting对象
● 使用Soapsuds访问远程对象的元数据
● 异步调用.NET Remoting方法
● 利用事件调用客户端中的方法
● 使用CallContext自动把数据传递给服务器
本章将讨论.NET Remoting,它可以用来访问另一个应用程序域(如另一个服务器)中的对
象。.NET Remoting为客户端和服务器端的.NET应用程序之间的通信提供了一种更为快速的格式。
本章将使用HTTP、TCP和IPC信道开发.NET Remoting对象、客户端和服务器。首先以编程
方式配置客户端和服务器,之后修改应用程序,以使用配置文件,其中只需要几个.NET Remoting
方法。本章还编写一些小程序,异步使用.NET Remoting,在客户端应用程序中调用事件处理程序。
.NET Remoting类位于ng名称空间及其子名称空间中,其中许多类在核
心程序集mscorlib中,一些只用于跨网络通信的类可用于ng程序集中。
54.1 使用.NET Remoting的原因
.NET Remoting是在不同应用程序域之间通信的技术。使用.NET Remoting在不同应用程序域之
间通信可以在同一个进程中、一个系统的进程之间或不同系统的进程之间进行。
对于客户端和服务器应用程序之间的通信,可以使用几种不同的技术。可以使用套接字编写应用
程序,或使用名称空间中的一些辅助类,便于处理协议、IP地址和端口号(详见第24章)。
使用这种技术总是必须通过网络发送数据。所发送的数据可以是自己的自定义协议,其中由服务器解
释数据包,这样服务器就知道应调用什么方法。我们不仅需要处理发送的数据,还需要自己创建线程。
C#高级编程(第7版)
使用 Web服务,可以跨网络传递消息。通过 Web服务,可以获得平台独立
性。 Web服务不仅具有平台独立性,在客户端和服务器之间的耦合也比较松散,于是更容
易处理版本问题。 Web服务详见第55章。
.NET Remoting总是在客户端和服务器之间提供较紧密的耦合,因为它们共享相同的对象类
型。.NET Remoting给CLR对象提供了跨不同应用程序域调用方法的功能。
.NET Remoting的功能可以用应用程序类型和所支持的协议描述,还可以通过CLR Object
Remoting来描述。
CLR Object Remoting是.NET Remoting的一个重要方面。所有的语言结构(如构造函数、委托、接
口、方法、属性和字段等)都可以与远程对象一起使用。.NET Remoting跨网络扩展CLR对象的功能,
CLR Object Remoting可以处理激活、分布式标识、生命周期和调用上下文等方面的工作。它与XML
Web服务大不相同。在XML Web服务中,对象是抽象的,客户端不需要知道服务器的对象类型。
目前,网络通信的最佳选择是第43章介绍的WCF。WCF提供 Web服务的功能,如
平台无关性,以及.NET Remoting为.NET与.NET通信提供的性能和灵活性。.NET Remoting仍具备
优势的一个地方是进程内部的应用程序域之间的通信。第50章讨论的MAF技术()在
后台使用.NET Remoting。当然还有许多基于.NET Remoting的现有.NET解决方案,所以不能把.NET
Remoting重写为一门新技术。
尽管SOAP由.NET Remoting提供,但不能假定它可用于不同平台之间的交互操
作。SOAP Document样式对于.NET Remoting不可用。.NET Remoting是为客户端和服
务器端的.NET应用程序而设计的。如果要进行交互操作,就应使用Web服务。
.NET Remoting是一个极为灵活的体系结构,它可以用于通过任意方式传输的任意应用程序中,
方法是使用任意的有效负载编码(payload endcoding)。
组合使用SOAP和HTTP只是调用远程对象的一种方式。传输信道是“可插入的”,也可以替
换。在.NET 4中,可以获取HttpChannel类、TcpChannel类和IpcChannel类分别表示的HTTP信道、
TCP信道和IPC信道,还可以构建传输信道,以使用UDP、IPX、SMTP、共享的内存机制或消息
队列,至于选择使用哪一个,自己完全有权决定。
“可插入(pluggable)”这个术语通常与.NET Remoting一起使用。“可插入”的意
思是设计一个特定的部分,这样用自定义实现方式可以替代它。
有效负载可以用于传输方法调用的参数,这个有效负载编码也可以替换。Microsoft发布了SOAP
和二进制编码机制。可以通过HTTP信道来使用SOAP格式化程序,也可以通过二进制格式化程序
使用HTTP。当然,这两种格式化程序都可以与TCP信道一起使用。
E196
尽管SOAP可以和.NET Remoting一起使用,但应该知道.NET Remoting仅支持
SAOP RPC样式,而 Web服务支持DOC样式(默认)和RPC样式。RPC样式
在新的SOAP版本中已废弃。


发布评论