Remot的e详解.pdf

  1. 1、本文档共53页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Remot的e详解

Microsoft .Net Remoting 系列专题之一 一、Remoting 基础 什么是Remoting,简而言之,我们可以将其看作是一种分布式处理方式。从微软的产品角度 来看,可以说Remoting 就是DCOM 的一种升级,它改善了很多功能,并极好的融合到.Net 平台下。Microsoft® .NET Remoting 提供了一种允许对象通过应用程序域与另一对象进行交 互的框架。这也正是我们使用Remoting 的原因。为什么呢?在Windows 操作系统中,是将 应用程序分离为单独的进程。这个进程形成了应用程序代码和数据周围的一道边界。如果不采用 进程间通信 (RPC)机制,则在一个进程中执行的代码就不能访问另一进程。这是一种操作系统 对应用程序的保护机制。然而在某些情况下,我们需要跨过应用程序域,与另外的应用程序域进 行通信,即穿越边界。 在Remoting 中是通过通道(channel)来实现两个应用程序域之间对象的通信的。如图所示: 首先,客户端通过Remoting,访问通道以获得服务端对象,再通过代理解析为客户端对象。 这就提供一种可能性,即以服务的方式来发布服务器对象。远程对象代码可以运行在服务器上(如 服务器激活的对象和客户端激活的对象),然后客户端再通过Remoting 连接服务器,获得该 服务对象并通过序列化在客户端运行。 在Remoting 中,对于要传递的对象,设计者除了需要了解通道的类型和端口号之外,无需再 了解数据包的格式。但必须注意的是,客户端在获取服务器端对象时,并不是获得实际的服务端 对象,而是获得它的引用。这既保证了客户端和服务器端有关对象的松散耦合,同时也优化了通 信的性能。 1、Remoting 的两种通道 Remoting 的通道主要有两种:Tcp 和Http。在.Net 中, System.Runtime.Remoting.Channel 中定义了IChannel 接口。IChannel 接口包括了 TcpChannel 通道类型和Http 通道类型。它们分别对应Remoting 通道的这两种类型。 TcpChannel 类型放在名字空间System.Runtime.Remoting.Channel.Tcp 中。Tcp 通道提 供了基于Socket 的传输工具,使用Tcp 协议来跨越Remoting 边界传输序列化的消息流。 TcpChannel 类型默认使用二进制格式序列化消息对象,因此它具有更高的传输性能。 HttpChannel 类型放在名字空间System.Runtime.Remoting.Channel.Http 中。它提供了 一种使用Http 协议,使其能在Internet 上穿越防火墙传输序列化消息流。默认情况下, HttpChannel 类型使用Soap 格式序列化消息对象,因此它具有更好的互操作性。通常在局域 网内,我们更多地使用TcpChannel;如果要穿越防火墙,则使用HttpChannel。 2、远程对象的激活方式 在访问远程类型的一个对象实例之前,必须通过一个名为Activation 的进程创建它并进行初始 化。这种客户端通过通道来创建远程对象,称为对象的激活。在Remoting 中,远程对象的激 活分为两大类:服务器端激活和客户端激活。 (1) 服务器端激活,又叫做WellKnow 方式,很多又翻译为知名对象。为什么称为知名对象激 活模式呢?是因为服务器应用程序在激活对象实例之前会在一个众所周知的统一资源标识符 (URI)上来发布这个类型。然后该服务器进程会为此类型配置一个WellKnown 对象,并根据指 定的端口或地址来发布对象。.Net Remoting 把服务器端激活又分为SingleTon 模式和 SingleCall 模式两种。 SingleTon 模式:此为有状态模式。如果设置为SingleTon 激活方式,则Remoting 将为所有 客户端建立同一个对象实例。当对象处于活动状态时,SingleTon 实例会处理所有后来的客户 端访问请求,而不管它们是同一个客户端,还是其他客户端。SingleTon 实例将在方法调用中 一直维持其状态。举例来说,如果一个远程对象有一个累加方法 (i=0;++i),被多个客户端 (例如两个)调用。如果设置为SingleTon 方式,则第一个客户获得值为1,第二个客户获得 值为2,因为他们获得的对

文档评论(0)

liwenhua00 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档