有太多的原因让我忽略了 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. 创建远程对象代理,完成调用。
后面的章节将就这些内容去做点研究。
分享到:
相关推荐
第二部分(6~17 章)则对.NET 中的关键知识点进行了深入剖 析,如程序集、流和序列化、加密与解密、网络编程、.NET Remoting、在.NET 中操作XML、.NET 应 用程序配置、基于角色的安全性、反射、多线程、对象生存期与...
外文文献。net.。
第二部分(6~17章)则对.NET中的关键知识点进行了深入剖析,如程序集、流和序列化、加密与解密、网络编程、.NET Remoting、在.NET中操作XML、.NET应用程序配置、基于角色的安全性、反射、多线程、对象生存期与垃圾...
第二部分(6~17 章)则对.NET 中的关键知识点进行了深入剖 析,如程序集、流和序列化、加密与解密、网络编程、.NET Remoting、在.NET 中操作XML、.NET 应 用程序配置、基于角色的安全性、反射、多线程、对象生存期与...
Microsoft .Net Remoting系列专题
深度挖掘.NET Framework 2.0(8):实战.NET Remoting(下)
Microsoft .NET RemotingMicrosoft .NET Remoting Microsoft .NET RemotingMicrosoft .NET Remoting Microsoft .NET RemotingMicrosoft .NET Remoting
Microsoft .NET Remoting 提供了一种允许对象通过应用程序域与另一对象进行交互的框架。这也正是我们使用Remoting的原因。为什么呢?在Windows操作系统中,是将应用程序分离为单独的进程。这个进程形成了应用程序...
pdf information Building Web Services with net remoting and asp.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传引用封送示例...
.NET Core,.NET 5和更高版本的远程处理正在开发中
自己弄的三层框架Spring.net,Remoting 本系统共分3部分: 1, DataAccess 数据访问层, 使用Ado.Net和Sql2005交互..数据访问层基本的Model, 单表基本操作存储过程, Dao代码可以由"动软代码生成工具修改版"生成 2, ...
一个.NET Remoting的简单实例,源码,打开即用,适合新手和做测试的相关技术人员。
Advanced .NET Remoting.pdf
深度挖掘.NET Framework 2.0(7):实战.NET Remoting(上)
演示如何使用.net Remoting示例,从而更好的学习和使用.net Remoting
Remoting双向通信v1.0