Microsoft .NET Romoting 框架简介

houselove青春

houselove青春

2016-01-29 13:53

Microsoft .NET Romoting 框架简介,Microsoft .NET Romoting 框架简介
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 远程对象。您可以根据应用程序的需要选择对象类型。本节将详细介绍这些对象。

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com)

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

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com)

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

“客户端激活的对象 (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 方

展开更多 50%)
分享

猜你喜欢

Microsoft .NET Romoting 框架简介

电脑网络
Microsoft .NET Romoting 框架简介

Microsoft .NET 框架常见问题 (一)

电脑网络
Microsoft .NET 框架常见问题 (一)

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

Microsoft .NET 框架常见问题(二)

电脑网络
Microsoft .NET 框架常见问题(二)

Microsoft .NET 框架常见问题(一)

电脑网络
Microsoft .NET 框架常见问题(一)

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

Microsoft .NET 框架常见问题 (二)

电脑网络
Microsoft .NET 框架常见问题 (二)

Spring框架快速入门之简介

编程语言 网络编程
Spring框架快速入门之简介

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

Flash 8中文版视频教程 绘画-裁切

Flash 8中文版视频教程 绘画-裁切

Flash 8中文版视频教程 绘画-联合

Flash 8中文版视频教程 绘画-联合
下拉加载更多内容 ↓