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

Reading number is top 10 articles
HTML语言剖析(十四)特殊字符_[Html教程]_0
provider-命名管道提供程序,error-,40,-,无法打开到,SQL,Server,的连接_[Asp.Net教程]
PHP多种格式显示日期函数_[PHP教程]
Visual C++ 6.0教程:c++程序的组成之常量与变量
如何将索引碎片数量降至最低_[SQL Server教程]
详细介绍动态网页PHP预定义变量之服务器变量_php资料_编程技术
新版FreeTextBox(版本3.1.6)在ASP.Net,2.0中使用简解_[Asp.Net教程]
Asp.net生成静态网页的实现代码_.net资料_编程技术
ADO.net中的数据库连接_[Asp.Net教程]
手工卸载SQL Server 2000数据库_[SQL Server教程]
Reading number is top 10 pictures
运动的范冰冰2
上传几张色图
王艳写真温柔如水1
Ashlynn Brooke a group sexy photo3
采访美女孙菲菲
The real super beauty7
关于海盗的研究2
Players in the eyes of a perfect love1
中国女孩大胆自拍,显露完美身材4
某某人向找小三的人宣战了
Download software ranking
The Bermuda triangle1
超级战舰
圣殿祭司的ASP.NET.2.0.开发详解-使用C#
双旗镇刀客B
Tram sex maniac 2 (H) rar bag8
linux高级编程
Tram sex maniac 2 (H) rar bag17
网页特效实例大全
jdk1.6 for windows
变速齿轮3.26
qq published in(发表于) 2014/7/9 1:35:49 Edit(编辑)
ASP.NET Remoting体系结构(五)

ASP.NET Remoting体系结构(五)

ASP.NET Remoting体系结构(五): 如何传送自定义类

如何传送自定义类对象

传送自定义类对象需要具备如下条件,存在向进程外的调用方提供功能的服务器对象,存在对服务器对象进行调用的客户端,并具有一个将调用从一端运送到另一端的传输机制。传送类对象分为按值传送和按引用传送。如果服务器方法的地址是逻辑地址,且可在一个进程中正常工作,但不能在其他客户端进程中正常工作。要解决此问题,客户端可以通过创建对象的完整副本,然后将该副本移动到客户端进程来调用服务器对象,这样在该客户端进程中就可以直接调用该副本的方法。这就是按值编组传送自定义类对象。

然而,许多对象无法或不能复制和移动到其他进程来执行。其情况有以下几种。

具有许多方法的非常大的对象不适合复制到或通过值传递到其他进程。通常,客户端仅需要由服务器对象上的一个或几个方法返回的信息。复制整个服务器对象将是对带宽以及客户端内存和处理时间的浪费,因为这种复制将复制与客户端需求无关的大量内部信息或可执行结构。

许多对象公开公共功能,但是有内部执行的私有数据。复制这些对象会使未经授权的客户端能够查看内部数据,从而造成安全隐患。

某些对象使用的数据无法以任何可理解的方式复制。例如,FileInfo 对象包含一个对操作系统文件的引用,此文件在服务器进程的内存中具有惟一的地址。可以复制这个地址,但它在另一进程中将不会具有任何意义。

在这些情况下,服务器进程应当向客户端进程传递一个对服务器对象的引用,而不是传递该对象的副本。客户端可以使用此引用来调用服务器对象。这些调用不在客户端进程中执行。相反,远程处理系统收集关于调用的所有信息并将其发送到服务器进程,在该进程中,将解释这些信息并查找正确的服务器对象,然后代表客户端对象向该服务器对象发出调用。然后,调用的结果被发送回客户端进程。这就是按引用编组传送自定义类对象。

按引用编组的类对象是继承 System.MarshalByRefObject 的可远程处理的对象。根据已声明的激活类型,当客户端在它自己的应用程序域中创建按引用编组的类对象的实例时,.NET远程处理基础结构在调用方的应用程序域中将创建表示该对象的代理对象,并向调用方返回对此代理的引用。然后,客户端将在此代理上进行调用。远程处理将发送这些调用,将其发送回起始应用程序域,并引发对实际对象的调用。

简言之,按值编组的类在传送中对象是从服务器端复制到客户端,然后在客户端执行。按引用编组的类,在传送中对象是通过代理对象进行通信,然后在服务器端执行。

下面是一个按值编组和按引用编组的例子。

ExeClient类按值编组,代码如下:

[Serializable]

public class ExeClient

{

public ExeClient()

{

}

public void NewMethod()

{

}

}

ExeServer类按引用编组,代码如下:

public class ExeServer:System.MarshalByRefObject

{

public ExeServer()

{

}

public void NewMethod()

{

}

}




添加到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.