有太多的原因让我忽略了 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. 创建远程对象代理,完成调用。
后面的章节将就这些内容去做点研究。
分享到:
相关推荐
SOAP是一种由W3C(万维网联盟)提出并开发的、基于XML的协议,主要由三个部分组成:一个定义消息及其处理框架的信封;一套用于表达应用程序定义的数据类型实例的编码规则;以及表示远程过程调用及其响应的约定[2]。...
第二部分(6~17章)则对.NET中的关键知识点进行了深入剖析,如程序集、流和序列化、加密与解密、网络编程、.NET Remoting、在.NET中操作XML、.NET应用程序配置、基于角色的安全性、反射、多线程、对象生存期与垃圾...
.NET Remoting是微软.NET框架中的一种技术,用于在不同的应用程序域(AppDomain)之间实现对象间的通信,甚至跨越网络。这种技术可以被视为分布式处理的一种形式,是对早期DCOM(分布式组件对象模型)的一种改进和...
.NET Framework 2.0中的.NET Remoting是一种强大的技术,它允许不同进程间的对象通信,甚至跨越不同的计算机。在本文中,我们将深入探讨.NET Remoting的实践应用,特别是下篇部分,我们将关注更高级的主题和技巧。 ...
**.NET Remoting** 是.NET Framework提供的一种通信机制,它允许在不同的应用程序域(AppDomain)之间进行交互,即使这些应用程序运行在不同的进程或甚至不同的机器上。.NET Remoting提供了比Web服务更直接、更快的...
.Net Remoting是Microsoft.NET Framework提供的一种分布式计算技术,它允许不同应用程序域(AppDomain)之间的对象交互,甚至跨越不同的计算机。Remoting可以视为DCOM(分布式组件对象模型)的进化版,它在.NET环境...
.NET Remoting是微软.NET框架提供的一种通信机制,用于在不同应用程序域(AppDomain)之间进行交互,甚至可以跨越网络。这个技术允许对象在不同的进程或机器上进行互操作,为分布式应用程序提供了强大的基础。以下是...
.NET Remoting是微软.NET框架中的一种核心技术,它允许在不同应用程序域(AppDomain)之间进行高效、安全且灵活的通信。这项技术的核心目标是解决分布式系统中的对象交互问题,使得对象能够跨越网络边界,如同在同一...
#### 一、.NET Remoting 概述 .NET Remoting 是一种在不同应用程序域之间进行通信的技术,它允许对象跨越进程边界甚至是机器边界来调用方法。这一特性使得 .NET Remoting 成为分布式应用开发的重要工具之一。.NET ...
.NET Remoting是微软.NET框架中的一个核心技术,它允许在不同应用程序域(AppDomains)或不同计算机之间进行对象间通信,从而构建分布式应用程序。这个技术在.NET早期版本中扮演了核心角色,尤其对于需要跨进程或者...
在.NET Remoting中,对象图指的是一个或多个相互引用的对象集合。在跨进程传输时,必须正确处理这些引用,以防止循环引用和内存泄漏。.NET Core中的替代方案可能需要自定义序列化逻辑来处理这些情况。同时,远程协议...
《Microsoft .NET Remoting权威指南》是一本由Scott Clean、James Aftel 和 Kim Williams三位专家级.NET开发者撰写的经典书籍,该书于2002年10月25日由Microsoft Press出版社出版,全书共计336页,ISBN号为0-7356-...
第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双向通信是一种在.NET Framework中实现客户端与服务器之间高效、灵活的数据交换技术。这个"Remoting双向通信v1.0"可能是一个实现双向通信的软件包或框架,旨在简化远程对象调用的过程,使应用程序能够实时地...