`
leonardleonard
  • 浏览: 821575 次
社区版块
存档分类
最新评论

[Remoting] 一:.NET Remoting

阅读更多
有太多的原因让我忽略了 Remoting,不过现在用它来开始 SOA 和 WCF 的旅途还是不错的选择。.NET Remoting 封装了分布式开发的消息编码和通讯方式,让我们用非常简单的方式既可完成不同模式的分布系统开发,同时其可配置、可扩展的特性也让我们拥有极大的灵活性。当然,我更看好其升级版本 —— WCF。

要了解 Remoting 的基本信息和介绍,还是看 MSDN 比较好。先写一个简单的 Example 来体验一下,为了方便,我直接在一个工程里面创建不同的应用程序域来模拟分布模式。
using System;
using System.Reflection;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters;
using System.Runtime.Serialization.Formatters.Binary;
using System.Runtime.CompilerServices;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Tcp;
using System.Runtime.Remoting.Messaging;

namespace Learn.Library.Remoting
{
  public class RemotingTest
  {
    /// <summary>
    /// 远程类型
    /// </summary>
    public class Data : MarshalByRefObject
    {
      private int i;

      public int I
      {
        get { return i; }
        set { i = value; }
      }

      public void Where()
      {
        Console.WriteLine("{0} in {1}", this.GetType().Name, AppDomain.CurrentDomain.FriendlyName);
      }
    }

    /// <summary>
    /// 服务器端代码
    /// </summary>
    static void Server()
    {
      // 创建新的应用程序域,以便模拟分布系统。
      AppDomain server = AppDomain.CreateDomain("server");
      server.DoCallBack(delegate
      {
        // 创建并注册信道
        TcpServerChannel channel = new TcpServerChannel(801);
        ChannelServices.RegisterChannel(channel, false);

        // 注册远程对象激活模式
        RemotingConfiguration.RegisterWellKnownServiceType(typeof(Data), "data",
          WellKnownObjectMode.Singleton);
      });
    }

    /// <summary>
    /// 客户端代码
    /// </summary>
    static void Client()
    {
      // 创建并注册信道
      TcpClientChannel channel = new TcpClientChannel();
      ChannelServices.RegisterChannel(channel, false);

      // 创建远程对象并调用其方法
      Data data = (Data)Activator.GetObject(typeof(Data), "tcp://localhost:801/data");
      data.Where();

      // 判断是否是代理
      Console.WriteLine(RemotingServices.IsTransparentProxy(data));
    }

    static void Main()
    {
      Server();
      Client();
    }
  }
}

在 Remoting 中,核心内容包括 "远程对象" 和 "信道",前者是我们要使用的内容,后者则提供了分布环境的封装。使用 Remoting 一般包括如下步骤:

1. 创建可远程处理的类型。
2. 注册信道。
3. 注册远程类型(以及其激活方式)。
4. 创建远程对象代理,完成调用。

后面的章节将就这些内容去做点研究。  
 
分享到:
评论

相关推荐

    COMPARISON OF SOAP BASED TECHNOLOGIES: .NET REMOTING AND ASP.NET WEB SERVICES

    SOAP是一种由W3C(万维网联盟)提出并开发的、基于XML的协议,主要由三个部分组成:一个定义消息及其处理框架的信封;一套用于表达应用程序定义的数据类型实例的编码规则;以及表示远程过程调用及其响应的约定[2]。...

    .NET之美:.NET关键技术深入解析 - 张子阳

    第二部分(6~17章)则对.NET中的关键知识点进行了深入剖析,如程序集、流和序列化、加密与解密、网络编程、.NET Remoting、在.NET中操作XML、.NET应用程序配置、基于角色的安全性、反射、多线程、对象生存期与垃圾...

    Microsoft .Net Remoting系列专题

    .NET Remoting是微软.NET框架中的一种技术,用于在不同的应用程序域(AppDomain)之间实现对象间的通信,甚至跨越网络。这种技术可以被视为分布式处理的一种形式,是对早期DCOM(分布式组件对象模型)的一种改进和...

    深度挖掘.NET Framework 2.0(8):实战.NET Remoting(下)

    .NET Framework 2.0中的.NET Remoting是一种强大的技术,它允许不同进程间的对象通信,甚至跨越不同的计算机。在本文中,我们将深入探讨.NET Remoting的实践应用,特别是下篇部分,我们将关注更高级的主题和技巧。 ...

    Building Web Services with net remoting and asp.net

    **.NET Remoting** 是.NET Framework提供的一种通信机制,它允许在不同的应用程序域(AppDomain)之间进行交互,即使这些应用程序运行在不同的进程或甚至不同的机器上。.NET Remoting提供了比Web服务更直接、更快的...

    Microsoft .Net Remoting系列教程之一:.Net Remoting基础篇

    .Net Remoting是Microsoft.NET Framework提供的一种分布式计算技术,它允许不同应用程序域(AppDomain)之间的对象交互,甚至跨越不同的计算机。Remoting可以视为DCOM(分布式组件对象模型)的进化版,它在.NET环境...

    .net Remoting示例

    .NET Remoting是微软.NET框架提供的一种通信机制,用于在不同应用程序域(AppDomain)之间进行交互,甚至可以跨越网络。这个技术允许对象在不同的进程或机器上进行互操作,为分布式应用程序提供了强大的基础。以下是...

    .NET Remoting

    .NET Remoting是微软.NET框架中的一种核心技术,它允许在不同应用程序域(AppDomain)之间进行高效、安全且灵活的通信。这项技术的核心目标是解决分布式系统中的对象交互问题,使得对象能够跨越网络边界,如同在同一...

    .NET Remoting 教程

    #### 一、.NET Remoting 概述 .NET Remoting 是一种在不同应用程序域之间进行通信的技术,它允许对象跨越进程边界甚至是机器边界来调用方法。这一特性使得 .NET Remoting 成为分布式应用开发的重要工具之一。.NET ...

    .Net Remoting系列(5)

    .NET Remoting是微软.NET框架中的一个核心技术,它允许在不同应用程序域(AppDomains)或不同计算机之间进行对象间通信,从而构建分布式应用程序。这个技术在.NET早期版本中扮演了核心角色,尤其对于需要跨进程或者...

    remoting-dotnet:.NET Core,.NET 5和更高版本的远程处理

    在.NET Remoting中,对象图指的是一个或多个相互引用的对象集合。在跨进程传输时,必须正确处理这些引用,以防止循环引用和内存泄漏。.NET Core中的替代方案可能需要自定义序列化逻辑来处理这些情况。同时,远程协议...

    Microsoft.NET Remoting权威指南

    《Microsoft .NET Remoting权威指南》是一本由Scott Clean、James Aftel 和 Kim Williams三位专家级.NET开发者撰写的经典书籍,该书于2002年10月25日由Microsoft Press出版社出版,全书共计336页,ISBN号为0-7356-...

    .NET之美:.NET关键技术深入分析

    第11章.NET Remoting 11.1理解Remoting 11.1.1 应用程序域基本概念 11.1.2应用程序域的基本操作 11.1.3在默认应用程序域中创建对象 11.1.4在新建应用程序域中创建对象 11.1.5代理和封送 11.1.6传引用封送示例...

    Remoting双向通信v1.0

    Remoting双向通信是一种在.NET Framework中实现客户端与服务器之间高效、灵活的数据交换技术。这个"Remoting双向通信v1.0"可能是一个实现双向通信的软件包或框架,旨在简化远程对象调用的过程,使应用程序能够实时地...

Global site tag (gtag.js) - Google Analytics