从简单的示例开始:

1、创建远程对象,在这里创建一个dll程序集,这个dll在服务器和客户机代码中都会用到。

 

Code

 

2、创建服务器。需要引用System.Runtime.Remoting程序集和之前创建的PublicService.dll程序集。在此创建名为ServerRemoting的Console Application。

名字空间是对象所需要的。请记住,如果得到System.Runtime.Remoting.Channels.Tcp名字空间不存在的信息,请检查是否添加了对System.Runtime.Remoting.dll的引用。



 

Code

 

3、创建客户机。需要引用System.Runtime.Remoting程序集和之前创建的PublicService.dll程序集
      在此创建名为RemotingClient的Console Application

 

Code


注意:
1、本实例在客户端运行HelloClient,但是要在服务器上远程对象注册之后,使服务器上的HelloClient服务一直处于运行状态,直到按任意键为止,否则会出错!
2、将代码中的“tcp://localhost:8085/Hi"”换成其他网址就可以运行在网络上,比如换成:tcp://192.168.3.235:8085/Hi"。

现在我们来先运行服务器,运行结果如图所示:

 


 

接着运行客户端,结果如下:

通过以上的简单例子,我们来看Remoting的一些基础知识:

 

Remoting基础

什么是Remoting,简而言之,我们可以将其看作是一种分布式处理方式。从微软的产品角度来看,可以说Remoting就是DCOM的一种升级,它改善了很多功能,并极好的融合到.Net平台下。Microsoft® .NET Remoting 提供了一种允许对象通过应用程序域与另一对象进行交互的框架。这也正是我们使用Remoting的原因。为什么呢?在Windows操作系统中,是将应用程序分离为单独的进程。这个进程形成了应用程序代码和数据周围的一道边界。如果不采用进程间通信(RPC)机制,则在一个进程中执行的代码就不能访问另一进程。这是一种操作系统对应用程序的保护机制。然而在某些情况下,我们需要跨过应用程序域,与另外的应用程序域进行通信,即穿越边界。

在Remoting中是通过通道(channel)来实现两个应用程序域之间对象的通信的。如图所示:

首先,客户端通过Remoting,访问通道以获得服务端对象,再通过代理解析为客户端对象。这就提供一种可能性,即以服务的方式来发布服务器对象。

 

 

posted on 2009-03-01 21:01  jasonM  阅读(451)  评论(0编辑  收藏  举报