引言

    在论坛里经常看见有人问:使用.NET Remoting如何从服务器主动发出事件通知客户端?的确,初接触.NET Remoting的人多半会有这样的疑问,因为大部分的文章和书籍在介绍.NET Remoting时都只介绍了通道,对象,激活和生存周期等等概念,在谈到如何进行远程通信的时候,都只告诉读者如何从客户端激活一个服务器对象然后传递 参数调用其方法.所以很多读者都不太清楚如何从服务器向客户端广播信息,甚至有很多人认为跟WEB服务器不能主动发送信息到浏览器一样,.NET Remoting同样也不能这么做,只能采用“客户端发出请求->服务器回复响应”这种简单的通讯模式,以至于在需要服务器对客户端广播信息时设计 出两端都放上Server和Client对象的复杂架构,既麻烦又容易出错.

    其实.NET Remoting远程处理完全支持事件驱动的编程和使用同步和异步委托的回调函数.在.NET Remoting中你可以方便的采用事件注册远程回调函数,并方便的利用这种机制将服务器端信息广播到客户端.下面将向读者详细介绍这种分布式多点广播应 用程序架构的编写方法.网络物理结构图

 

如何创建以Microsoft .NET Remoting为基础的分布式应用架构?_.net

    上面便是网络结构示意图,之所以说它是一个典型的分布式应用架构是因为基于这种网络结构十分常见,在证券交易,期货行情,视频会议,远程教学等许多方面都能派上用场.架构设计为了形象化抽象的概念,我们先来了解一下电视广播的工作流程,再结合我们的程序理解架构设计的主要思想.

    电视广播的流程是由以下四个主要机构参与其中:

    1. 节目制作部门.负责制作电视节目.

    2. 转播间.负责安排节目制作部门提供的节目的广播方式.

    3. 电视塔.负责将电视信号转化为无线电波发送出去.

    4. 电视机.负责接受无线电信号并转换成可视的图象.

    在我们的程序中也是由四个主要的对象组成,它们的名称和用途分别是:

    1. Announcer:信息发送对象.负责发送原始信息,相当于电视节目制作部门.

    2. InfoCenter: 信息中心.负责管理信息广播机制.相当于转播间.

    3. Server:服务器.管理传送通道,负责发送广播数据流.相当于电视塔.

    4. Receiver:接受器.接受广播数据流,转换成我们可以理解的信息格式.相当于电视机.

对象结构如下图所示:

 

如何创建以Microsoft .NET Remoting为基础的分布式应用架构?_.net_02