当前位置: 首页 > 图文教程 > 网络编程 > ASP.NET > Microsoft .NET Romoting 框架简介

ASP.NET
asp.net GridView控件中模板列CheckBox全选、反选、取消
asp.net GridView 删除时弹出确认对话框(包括内容提示)
asp.net DropDownList 三级联动下拉菜单实现代码
asp DataTable添加列和行的三种方法
Asp.net 页面调用javascript变量的值
asp.net 长文章通过设定的行数分页
asp.net 定时间点执行任务的简易解决办法
asp.net 页面延时五秒,跳转到另外的页面
asp.net 动态输出透明gif图片
asp.net DataList与Repeater用法区别
asp.net Javascript获取CheckBoxList的value
asp.net程序在调式和发布之间图片路径问题的解决方法
asp.net下生成英文字符数字验证码的代码
asp.net 页面版文本框智能提示JSCode (升级版)
ASP.NET URL伪静态重写实现方法
ASP.NET 2.0 中Forms安全认证
asp.net 动态添加多个用户控件
asp.net Repeater显示父子表数据,无闪烁
asp.net 无法获取的内部内容,因为该内容不是文本 的解决方法
asp.net GridView排序简单实现

ASP.NET 中的 Microsoft .NET Romoting 框架简介


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-03   浏览: 53 ::
收藏到网摘: n/a

Microsoft .NET Romoting 框架简介
Paddy Srinivasan
Microsoft Corporation
2001 年 1 月

摘要:本文介绍 Microsoft .NET Romoting 框架的基本原理。除了介绍组成 .NET Romoting 框架的主要组件外,还介绍 .NET Remoting 与分布式对象通信的几种方案。

目录
简介
.NET Remoting 对象
集成 .NET Remoting 对象
.NET Remoting 元数据和配置文件
.NET Remoting 方案
总结
其他资料
简介
Microsoft® .NET Remoting 是一个丰富的、可扩展的框架,它使得处于不同 AppDomain、不同过程和不同机器上的对象可以实现无缝通信。.NET Remoting 提供的编程模型和运行时支持功能强大而又易于使用,能够实现透明的交互操作。本文将浏览 Remoting 体系结构的不同构造块,并研究一些应用 .NET Remoting 的常见方案。.NET Remoting 对象可以作为一种 Web 服务使用(请参阅 MSDN Magazine 文章“可编程 Web:Web 服务为 Microsoft .NET 框架提供构造块(英文)”,允许从任何能够执行 SOAP 调用的客户端访问 .NET Remoting 对象。有关 .NET Remoting 的概述信息,请先阅读文章“Microsoft .NET Remoting:技术概述(英文)”。

.NET Remoting 对象
有三类对象可以被配置为 .NET 远程对象。您可以根据应用程序的需要选择对象类型。本节将详细介绍这些对象。

“单一调用对象”仅为一个请求提供服务。在需要对象完成的工作量有限,并且不必存储状态信息的情况下,单一调用对象非常有用。单一调用对象可以被配置为负载平衡模式。在方法调用之间,单一调用对象不能保留状态信息。

“单一元素对象”可以为多个客户端提供服务,因此可以通过保存客户端调用的状态信息来实现数据共享。当客户端需要明确地共享数据,并且不能忽略创建和维护对象的开销时,这种对象非常有用。

“客户端激活的对象 (CAO)”是服务器端的对象,收到来自客户端的请求时会激活这些对象。这种激活服务器对象的方法与传统的 COM coclass 激活方法很相似。当客户端使用“new”操作符请求服务器对象时,将向远程应用程序发送一个激活请求消息。随后,服务器将创建被请求类的实例,并向调用它的客户端应用程序返回 ObjRef。客户端将使用此 ObjRef 创建代理。客户端的方法调用将在代理上执行。客户端激活的对象可以为其特定的客户端(不能跨越不同的客户端对象)保存方法调用之间的状态信息。每次“new”调用都会返回服务器类型的独立实例的代理。

使用 .NET Remoting 传递对象
在 .NET Remoting 中,可以通过以下方式在应用程序之间传递对象:

作为方法调用的参数
示例:public int myRemoteMethod (MyRemoteObject myObj)

方法调用的返回值
示例:public MyRemoteObject myRemoteMethod(String myString)

访问 .NET 组件的属性或字段得到的值
示例:myObj.myNestedObject

对于 Marshal By Value (MBV) 的对象,当它在应用程序之间传递时,将创建一个完整的副本。

对于 Marshal By Reference (MBR) 的对象,当它在应用程序之间传递时,将创建该对象的引用。当对象引用 (ObjRef) 到达远程应用程序后,将转变成“代理”返回原始对象。

简单 .NET Remoting 服务器对象的代码示例
using System;
using System.Runtime.Remoting;
namespace myRemoteService
{
// 有名的 Web 服务对象
public class myRemoteObject : MarshalByRefObject
{
// myRemoteMethod 方法
public String myRemoteMethod(String s)
{
return "Hello World";
}
}
}

访问此对象的客户端代码示例
using System;
using System.Runtime.Remoting;
using myRemoteService;
public class Client
{
public static int Main(string[] args)
{
ChannelServices.RegisterChannel(new HTTPChannel(7055));
// 创建 myRemoteObject 类的实例
myRemoteObject myObj = ( myRemoteObject)Activator.GetObject(typeof(myRemoteObject),
"http://myHost:7021/host/myRemoteObject.soap");
myObj. myRemoteMethod ("Hello World");
return 0;
}
}
租用生存期
对于那些具有在应用程序之外传送的对象引用的对象,将创建一个租用。租用具有一个租用时间。如果租用时间为 0,则租用过期,对象将断开与 .NET Romoting 框架的连接。一旦 AppDomain 内部所有的对象引用都被释放,则下一个 GC 发生时对象将被回收。租用控制了对象的生存期。

对象有默认的租用阶段。当客户端要在同一服务器对象中维护状态信息时,可以通过许多方法扩展租用阶段,使对象继续生存。

可以将服务器对象的租用时间设置为无限,这样 Remoting 在垃圾回收周期中就不会回收此对象。


客户端可以调用 RemotingServices.GetLifetimeService 方法,以从 AppDomain 的租用管理器获取服务器对象的租用时间。然后,客户端便可以通过 Lease 对象来调用 Lease.Renew 方