当前位置:首页>网络学院>程序开发>c#教程>文章内容

Microsoft.NETRomoting框架简介

[ 来源:www.it55.com | 作者: | 时间:2007-07-14 | 收藏 | 推荐 ] 【

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

vd;k;l www.it55.com rdfg


  总结
  其他资料
  简介
  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:技术概述(英文)”。 vd;k;l www.it55.com rdfg
  .NET Remoting 对象
  有三类对象可以被配置为 .NET 远程对象。您可以根据应用程序的需要选择对象类型。本节将详细介绍这些对象。
  “单一调用对象”仅为一个请求提供服务。在需要对象完成的工作量有限,并且不必存储状态信息的情况下,单一调用对象非常有用。单一调用对象可以被配置为负载平衡模式。在方法调用之间,单一调用对象不能保留状态信息。
  “单一元素对象”可以为多个客户端提供服务,因此可以通过保存客户端调用的状态信息来实现数据共享。当客户端需要明确地共享数据,并且不能忽略创建和维护对象的开销时,这种对象非常有用。
  “客户端激活的对象 (CAO)”是服务器端的对象,收到来自客户端的请求时会激活这些对象。这种激活服务器对象的方法与传统的 COM coclass 激活方法很相似。当客户端使用“new”操作符请求服务器对象时,将向远程应用程序发送一个激活请求消息。随后,服务器将创建被请求类的实例,并向调用它的客户端应用程序返回 ObjRef。客户端将使用此 ObjRef 创建代理。客户端的方法调用将在代理上执行。客户端激活的对象可以为其特定的客户端(不能跨越不同的客户端对象)保存方法调用之间的状态信息。每次“new”调用都会返回服务器类型的独立实例的代理。

sflj www.it55.com kg^&fgd


  使用 .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 服务器对象的代码示例 vd;k;l www.it55.com rdfg
  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),
IT资讯之家 www.it55.com

   "http://myHost:7021/host/myRemoteObject.soap");
   myObj. myRemoteMethod ("Hello World");
   return 0;
   }
  }
  租用生存期
  对于那些具有在应用程序之外传送的对象引用的对象,将创建一个租用。租用具有一个租用时间。如果租用时间为 0,则租用过期,对象将断开与 .NET Romoting 框架的连接。一旦 AppDomain 内部所有的对象引用都被释放,则下一个 GC 发生时对象将被回收。租用控制了对象的生存期。
  对象有默认的租用阶段。当客户端要在同一服务器对象中维护状态信息时,可以通过许多方法扩展租用阶段,使对象继续生存。
  可以将服务器对象的租用时间设置为无限,这样 Remoting 在垃圾回收周期中就不会回收此对象。
  客户端可以调用 RemotingServices.GetLifetimeService 方法,以从 AppDomain 的租用管理器获取服务器对象的租用时间。然后,客户端便可以通过 Lease 对象来调用 Lease.Renew 方法,以延长租用时间。

(编辑:IT资讯之家 www.it55.com

返回顶部
共4页: 上一页 1 [2] [3] [4] 下一页  

网友评论

[以下评论为网友观点,不代表本站。请自觉遵守互联网相关政策法规,所有连带责任均有评论者自负。]
[不超过250字]

图片文章