欢迎来到天天文库
浏览记录
ID:11698454
大小:66.00 KB
页数:8页
时间:2018-07-13
《创建以microsoft.netremoting为基础的分布式应用架构》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、专栏作品创建以Microsoft.NETRemoting为基础的分布式应用架构卢彦引言在论坛里经常看见有人问:使用.NETRemoting如何从服务器主动发出事件通知客户端?的确,初接触.NETRemoting的人多半会有这样的疑问,因为大部分的文章和书籍在介绍.NETRemoting时都只介绍了通道,对象,激活和生存周期等等概念,在谈到如何进行远程通信的时候,都只告诉读者如何从客户端激活一个服务器对象然后传递参数调用其方法。所以很多读者都不太清楚如何从服务器向客户端广播信息,甚至有很多人认为跟WEB服务器不
2、能主动发送信息到浏览器一样,.NETRemoting同样也不能这么做,只能采用"客户端发出请求->服务器回复响应"这种简单的通讯模式,以至于在需要服务器对客户端广播信息时设计出两端都放上Server和Client对象的复杂架构,既麻烦又容易出错。其实.NETRemoting远程处理完全支持事件驱动的编程和使用同步和异步委托的回调函数。在.NETRemoting中你可以方便的采用事件注册远程回调函数,并方便的利用这种机制将服务器端信息广播到客户端。下面将向读者详细介绍这种分布式多点广播应用程序架构的编写方法。网
3、络物理结构图上面便是网络结构示意图,之所以说它是一个典型的分布式应用架构是因为基于这种网络结构十分常见,在证券交易,期货行情,视频会议,远程教学等许多方面都能派上用场。架构设计为了形象化抽象的概念,我们先来了解一下电视广播的工作流程,再结合我们的程序理解架构设计的主要思想。电视广播的流程是由以下四个主要机构参与其中:1.节目制作部门。负责制作电视节目。2.转播间。负责安排节目制作部门提供的节目的广播方式。3.电视塔。负责将电视信号转化为无线电波发送出去。4.电视机。负责接受无线电信号并转换成可视的图象。在我们
4、的程序中也是由四个主要的对象组成,它们的名称和用途分别是:1.Announcer:信息发送对象。负责发送原始信息,相当于电视节目制作部门。2.InfoCenter:信息中心。负责管理信息广播机制。相当于转播间。3.Server:服务器。管理传送通道,负责发送广播数据流。相当于电视塔。4.Receiver:接受器。接受广播数据流,转换成我们可以理解的信息格式。相当于电视机。对象结构如下图所示:程序设计首先我们来看一下信息中心InfoCenter对象的编写方法(InfoCenter.cs):usingSystem
5、;usingSystem.Runtime.Remoting;namespaceDistribution_Framework{//定义广播事件的参数类[Serializable]publicclassBroadcastEventArgs:EventArgs{privatestringmsg=null;publicBroadcastEventArgs(stringmessage){msg=message;}publicstringMessage{get{returnmsg;}}}publicdelegatevoi
6、dBroadcastEventHandler(objectsender,BroadcastEventArgssubmitArgs);publicclassInfoCenter:MarshalByRefObject{publicInfoCenter(){Console.WriteLine("InfoCentercreated.");}publicoverrideobjectInitializeLifetimeService(){returnnull;}publiceventBroadcastEventHandl
7、erBroadcaster;publicvoidBroadcasting(stringmessage){BroadcastEventArgse=newBroadcastEventArgs(message);if(Broadcaster!=null){Broadcaster(this,e);//发出事件Console.WriteLine("Broadcast:"+e.Message);}}}}要点说明:publicdelegatevoidBroadcastEventHandler(objectsender,Br
8、oadcastEventArgssubmitArgs);定义了一个事件处理委托及其参数格式。publiceventBroadcastEventHandlerBroadcaster;请注意,这一句定义了一个公共事件,需要接受广播信息的远程对象可以通过这个事件向InfoCenter注册使用BroadcastEventHandler委托的远程回调函数。这个机制有点类似有线受费电视,你如果需要收看电视台提供
此文档下载收益归作者所有