`
izuoyan
  • 浏览: 9222793 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

初识用.NET Remoting来开发分布式应用

阅读更多

一..NET Remoting简介:

.NET Remoting从某种意义上讲是DCOM的替代品。ASP.NET Web服务十分有用,但是这项技术在企业内联网的解决方案中,对于某些业务请求来说并不快,也没有足够的灵活性,而且,ASP.NET Web服务需要有运行时的支持。使用.NET Remoting技术后,可以将Web服务提供给世界上的任何地方。而且可以在所有的应用程序类型中运行Web服务。

二..NET Remoting 的基本原理:

体系结构图如下:

三.几个重要的概念:

1.远程对象:

远程对象类是从MarshalByRefObject类中派生的。跨越应用程序域调用这个类需要使用代理。.NET Remoting支持两种类型的远程对象:知名的(Well-known)远程对象和客户激活(Client-activated)远程对象。远程对象其实包括两层含义:

操作远程对象:对象运行在远程,客户段向他发送消息;

传递远程对象:将远程对象拿到本地,或者将本地对象发送过去,对副本进行操作。

2.激活:

使用new运算符可以激活远程对象。还有其它一些方式也可以激活远程对象,在以后的随笔里面我会介绍。

3.通道:

一个远程对象使用通道发送和接收消息。服务器选择一个通道来监听请求,客户端选择通道来和服务器通讯。Remoting提供了内置的通道:TCP通道和HTTP通道,我们也可以编写自己的通道。

4.编组:

数组通过应用程序域被传递的过程称为编组。将变量作为远程对象的参数来发送时,这个变量必须被转换,以便能够通过应用程序域发送该变量。

5.监听:

使用监听,能够将某些功能置入到方法调用链中。如果调用某个对象的方法,监听层便能够捕获调用来转换方法调用,或是完成某些日志记录。.NET Remoting调用链的每一部分都是用监听。

四.开发Remoting三步走:

开发.NET Remoting分三步走,在这里以一个简单的例子来说明。

1.创建远程对象:

继承System.MarshalByRefObject

1usingSystem;
2usingSystem.Collections;
3usingSystem.Text;
4
5namespaceSimpleRemoting
6{
7publicclassHelloServer:MarshalByRefObject
8{
9publicHelloServer()
10{
11/**////输出信息,服务器激活
12Console.WriteLine("服务器激活……");
13}

14publicStringHelloMethod(Stringname)
15{
16Console.WriteLine(
17"服务器端:{0}",name);
18return"这里是:"+name;
19}

20}

21}


2.创建宿主应用程序:

注册通道

注册服务器激活的远程对象

运行宿主程序

1usingSystem;
2usingSystem.Net;
3usingSystem.Runtime.Remoting;
4usingSystem.Runtime.Remoting.Channels;
5usingSystem.Runtime.Remoting.Channels.Tcp;
6usingSystem.Runtime.Remoting.Channels.Http;
7
8namespaceSimpleRemoting
9{
10
11publicclassServer
12{
13publicstaticintMain(string[]args)
14{
15
16/**////创建Tcp通道
17TcpChannelchan1=newTcpChannel(8085);
18
19/**////创建Http通道
20HttpChannelchan2=newHttpChannel(8086);
21
22/**////注册通道
23ChannelServices.RegisterChannel(chan1);
24ChannelServices.RegisterChannel(chan2);
25
26RemotingConfiguration.RegisterWellKnownServiceType
27(
28typeof(HelloServer),
29"SayHello",
30WellKnownObjectMode.Singleton
31);
32
33
34System.Console.WriteLine("按任意键退出!");
35/**////下面这行不能少
36System.Console.ReadLine();
37return0;
38}

39
40}

41}

42
43


3.建立客户端程序:

注册通道

根据URL得到对象代理

使用代理调用远程对象

1usingSystem;
2usingSystem.Runtime.Remoting;
3usingSystem.Runtime.Remoting.Channels;
4usingSystem.Runtime.Remoting.Channels.Tcp;
5usingSystem.Runtime.Remoting.Channels.Http;
6usingSystem.IO;
7
8namespaceSimpleRemoting
9{
10publicclassClient
11{
12publicstaticvoidMain(string[]args)
13{
14/**////使用TCP通道得到远程对象
15TcpChannelchan1=newTcpChannel();
16ChannelServices.RegisterChannel(chan1);
17
18HelloServerobj1=(HelloServer)Activator.GetObject(
19typeof(SimpleRemoting.HelloServer),
20"tcp://localhost:8085/SayHello");
21
22if(obj1==null)
23{
24System.Console.WriteLine(
25"连接TCP服务器失败");
26}

27
28/**////使用HTTP通道得到远程对象
29HttpChannelchan2=newHttpChannel();
30ChannelServices.RegisterChannel(chan2);
31
32HelloServerobj2=(HelloServer)Activator.GetObject(
33typeof(SimpleRemoting.HelloServer),
34"http://localhost:8086/SayHello");
35
36if(obj2==null)
37{
38System.Console.WriteLine(
39"连接HTTP服务器失败");
40}

41
42/**////输出信息
43Console.WriteLine(
44"ClientTCPHelloMethod{0}",
45obj1.HelloMethod("Caveman1"));
46Console.WriteLine(
47"ClientHTTPHelloMethod{0}",
48obj2.HelloMethod("Caveman2"));
49Console.ReadLine();
50}

51}

52}

53

分享到:
评论

相关推荐

    基于.NET Remoting框架的分布式系统构建.pdf

    在实际应用中,基于.NET Remoting构建分布式系统可以提高系统性能,减少网络延迟,同时简化开发流程。然而,它并不适用于所有场景,尤其是在需要高度互操作性和跨平台能力的Web服务中,Web Service可能是一个更好的...

    .NET Remoting技术构建分布式

    总结来说,.NET Remoting提供了一种高效的分布式通信机制,尤其适用于.NET Framework内的应用程序。它在开发效率和功能上优于Socket,但不如Web Service具有广泛的标准支持和互操作性。与WCF相比,虽然在某些场景下...

    基于.NET Remoting的分布式系统实现

    最后,通过一个具体的分布式远程对象处理实例进一步阐述了使用.NET Remoting框架可以极大地简化分布式远程处理的开发过程。 #### 关键词 Remoting;代理;远程对象;分布式系统 ### 1\. 引言 随着互联网技术的...

    使用.NET Remoting 建立分布式应用程序(二)

    .NET Remoting是微软.NET框架提供的一种....NET Remoting虽然在.NET Core中已被弃用,但在.NET Framework中仍然是构建分布式系统的重要工具。理解并掌握其工作原理和实践技巧,对于提升.NET开发者的技能水平大有裨益。

    使用.NET Remoting 建立分布式应用程序(一).

    使用.NET Remoting需要进行一些配置,包括通道设置、对象的激活方式和生命周期等。这些可以通过代码配置,也可以使用配置文件(如app.config)来实现。 5. **安全性** .NET Remoting支持身份验证和授权,可以限制...

    使用.NET Remoting 建立分布式应用程序(六):使用.NET Remoting 创建五子棋对战游戏(下)

    使用.NET Remoting 建立分布式应用程序(六):使用.NET Remoting 创建五子棋对战游戏(下) code

    使用.NET Remoting 建立分布式应用程序(四)

    在“使用.NET Remoting 建立分布式应用程序(四)”这个主题中,我们将深入探讨.NET Remoting的核心概念和实际应用。分布式应用程序通常涉及多个独立运行的组件,这些组件需要协同工作以完成特定任务。.NET Remoting...

    使用.NET Remoting 建立分布式应用程序

    在“使用.NET Remoting建立分布式应用程序”这一主题中,主要涉及以下知识点: 1. **基本概念**: - **应用程序域(AppDomain)**:.NET Framework中的执行环境,每个应用程序都运行在一个AppDomain内,提供了安全...

    使用.NET Remoting 建立分布式应用程序(三)

    使用.NET Remoting 建立分布式应用程序(三)

    使用.NET Remoting 建立分布式应用程序(一)

    本文将深入探讨.NET Remoting的基础知识,以及如何利用它来创建分布式应用程序。 首先,了解.NET Remoting的基本概念至关重要。在.NET Remoting中,远程对象是可以被其他应用程序域(AppDomain)或进程调用的对象,...

    使用.net remoting 建立分布式应用程序

    .NET Remoting 的入门课程,通过实例介绍Remoting技术,使广大.NET学习者对.NET Remoting有一个整体的感性认识。演示了如何快速的建立和配置分布式应用程序中服务端和客户端。

    使用.NET Remoting 建立分布式应用程序(五):使用.NET Remoting 创建五子棋对战游戏(上)

    4. **事件驱动编程(Event-driven Programming)**:为了实现实时更新,我们可以使用.NET Remoting 的事件机制。服务器端在棋盘状态改变时触发事件,客户端订阅这些事件以更新自己的棋盘视图。 5. **安全性与性能...

    基于.net remoting的分布式应聘测试系统

    综上所述,基于.NET Remoting的分布式应聘测试系统是一个高效、灵活的招聘工具,它利用.NET Framework的强大功能,特别是.NET Remoting,来实现分布式测试的管理和数据交换。这种设计使得系统能够处理大量并发的在线...

    使用Remoting开发分布式应用

    本文将深入探讨如何使用Remoting来开发分布式应用。 首先,理解.NET Remoting的概念至关重要。Remoting是.NET框架内的一种技术,它使得对象能够在不同的应用程序域(AppDomain)之间进行通信,即使这些对象位于不同...

    使用.NET Remoting从服务器主动发出事件通知客户端远程广播

    使用.NET Remoting从服务器主动发出事件通知客户端(远程广播) 经常看见有人问:使用.NET Remoting如何从服务器主动发出事件通知客户端?的确,初接触.NET Remoting的人多半会有这样的疑问,因为大部分的文章和...

    基于.net Remoting技术的分布式图书管理系统(修正版)

    利用.net的remoting技术很好地实现了局域网内程序域的互访问题。经测试发布不完全版本,有兴趣地可以研究一下。文件夹结构:BLL(业务逻辑层)DLL(数据访问层)RemoteServer(启动服务器端)RemoteClient(远程...

Global site tag (gtag.js) - Google Analytics