All articles| All Pictures| All Softwares| All Video| Go home page| Write articles| Upload pictures

Reading number is top 10 articles
ajax技术制作得在线歌词搜索功能_[AJAX教程]
如何在十天内学会php之第七天_php资料_编程技术
在MySQL中定义外键_php资料_编程技术
将内容自动添加到指定文本域的JS_[Html教程]
同步两个Sql,server(2)_[SQL,Server教程]
在服务器上安装和使用MySQL的注意事项_php资料_编程技术
实现基于事件通知的.Net套接字_[Asp.Net教程]
两个小问题where 1=1 和 count(1) 与 count(-)_[SQL Server教程]
Asp.Net中文本换行_[Asp.Net教程]
用PHP脚本在Linux系统上读取输入和对文件进行操作_php资料_编程技术
Reading number is top 10 pictures
BingBingFan apple dew point photo gallery5
含苞欲放的素颜美少女3
Go to the national museum1
到南昌西站了3
So beauty, will let you spray blood4
The real super beauty5
这张图有两句话,你看出来了吗?
鸡蛋的新玩法
毛俊杰-能量永动机
胸部遭到偷窥的女人们
Download software ranking
Boxer's Top ten classic battle1
Tram sex maniac 2 (H) rar bag16
Kung.Fu.Panda.2
I for your crazy
Jinling thirteen stock
传奇私服架设教程
Sora aoi - one of more PK
Tram sex maniac 2 (H) rar bag7
打鸟视频
Photoshop 8.0图象编辑软件
qq published in(发表于) 2014/7/9 1:35:37 Edit(编辑)
ASP.NET Remoting体系结构(七)

ASP.NET Remoting体系结构(七)

ASP.NET Remoting体系结构(七): 远程对象的注册和

远程对象的注册和激活

远程处理框架支持远程对象的服务器激活和客户端激活。不需要远程对象在方法调用之间维护任何状态时,一般使用服务器激活。服务器激活也适用于多个客户端调用方法位于同一对象实例上、且对象在函数调用之间维持状态的情况。另一方面,客户端激活对象从客户端实例化,并且客户端通过使用基于租用的专用系统来管理远程对象的生存期。

在可以接受客户端的访问之前,所有的远程对象都必须用远程处理框架注册。对象注册一般由宿主应用程序来完成。宿主应用程序将启动使用ChannelServices类注册一个或多个通道,使用RemotingServices类注册一个或多个远程对象,然后等待被终止。

注意:已注册的通道和对象只有在用来注册它们的进程活动时才可以使用。如果退出了该进程,则会自动从远程处理服务中删除它注册的所有信道和对象。

在框架中注册远程对象时,需要以下4项信息,如下所示。

包含类的程序集名称。

远程对象的类型名称。

客户端定位对象时将使用的对象URI。

服务器激活所需的对象模式。该模式可以是SingleCall,也可以是Singleton。

远程对象可以通过下列两种方式注册,调用RegisterWellKnownType类,将上述信息作为参数传递;或将上述信息存储在配置文件中,然后调用ConfigureRemoting类并将该配置文件的名称作为参数传递。

这两种方法执行的功能相同,因此可以使用其中的任意一种来注册远程对象。当然,后一种方法更方便些,因为无需重新编译宿主应用程序,即可改变配置文件的内容。将HelloService 类注册为 SingleCall 远程对象,代码如下:

RemotingServices.RegisterWellKnownType(

"server",

"Samples.HelloServer",

"SayHello",

WellKnownObjectMode.SingleCall);

其中,server是程序集的名称,HelloServer 是类的名称,SayHello是对象URI。

注册了远程对象后,框架将为该对象创建一个对象引用,然后从程序集中提取与该对象相关的必要元数据。随后,这一信息将与 URI 和程序集名称一起存储在对象引用中(该对象引用将被写入一个用于跟踪已注册远程对象的远程处理框架表中)。这里需要注意,除了在客户端试图调用对象上的某个方法或从客户端激活对象时以外,注册进程不会实例化远程对象自身。

现在,任何知道该对象URI的客户端都可以使用ChannelServices类注册信道,并调用new、GetObject 或 CreateInstance 激活对象,从而获得该对象的一个代理。示例代码如下:

ChannelServices.RegisterChannel(new TCPChannel);

HelloServer obj = (HelloServer)Activator.GetObject(

typeof(Samples.HelloServer), "tcp://localhost:9999/SayHello");

其中tcp://localhost:8085/SayHello表示在端口9999上使用TCP协议连接到SayHello终结点的远程对象。在编译该客户端代码时,编译器会要求提供关于HelloServer 类的类型信息。该信息可以通过以下方式来提供,提供对HelloService类所在程序集的引用将远程对象拆分为实现和接口类,并在编译客户端时引用这些接口。使用SOAPSUDS工具直接从终结点提取所需的元数据。此工具将连接至所提供的终结点,提取元数据,然后生成可用于编译客户端的程序集或源代码。

GetObject或new可用于服务器激活对象。使用这两个调用时不会实例化对象,实际上也不会生成任何网络调用。框架从元数据获得了创建代理所须的足够信息,但并未连接到远程对象上。只有在客户端调用代理上的某个方法时才会建立网络连接。当调用抵达服务器时,框架将从消息中提取 URI,检查远程处理框架表以便定位与 URI 匹配的对象引用,然后在必要时将对象实例化,并将方法调用转发至对象。如果将对象注册为SingleCall(远程对象模式),则完成方法调用后该对象会取消。每次调用一个方法时,都会创建一个新的实例。GetObject 和 new 之间的惟一差别在于,前者允许指定URL作为参数,而后者从配置中获得 URL。



添加到del.icio.us 添加到新浪ViVi 添加到百度搜藏 添加到POCO网摘 添加到天天网摘365Key 添加到和讯网摘 添加到天极网摘 添加到黑米书签 添加到QQ书签 添加到雅虎收藏 添加到奇客发现 diigo it 添加到饭否 添加到飞豆订阅 添加到抓虾收藏 添加到鲜果订阅 digg it 貼到funP 添加到有道阅读 Live Favorites 添加到Newsvine 打印本页 用Email发送本页 在Facebook上分享


Disclaimer Privacy Policy About us Site Map

If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)
Copyright ©2011-
uuhomepage.com, Inc. All rights reserved.