《现代电子技术》2006年第16期摘录:《现代电子技术》2006年第1
-
如发现有乱码,请点击下面链接浏览原文
正文摘录:
《现代电子技术》2006年第16期总第231期》嵌入式与单片机q源码都是可移植的。2消息服务lceStorm消息服务IceStorm是一种高效的发布/订阅(publish/subscribe)服务,能够解除客户与服务器的耦合。在本质上,IceStorm充当的是事件分发交换机。发布者把事件发给这个服务,由他发给订阅者。这样,发布者发布的单个事件就可以发送给多个订阅者。事件按照主题进行分类,订阅者会指定他们感兴趣的主题。只有那些与订阅者感兴趣的主题相吻合的主题才会发给这个订阅者。如果需要把信息分发给大量应用组件,IceStorm就会特别有用(一个典型的例子是,拥有大量订阅者的证券报价应用)。应用要通过订阅某个主题(topic:)来表明自己有兴趣接收某些消息。lceStm‘m服务器能够支持任意数量的主题,这些主题是动态创建的,通过惟一的名字区分。每个主题都可以有多个发布者和订阅者。在本质上,一个主题和一个由应用定义的Slice-接口是等价的,该接口的各操作定义该主题所支持消息的类型。发布者使用主题接口的代理发送他的消息,而订阅者则为了接收消息而实现主题接口(或派生自该主题接口的接口)。这与传统的客户一服务器方式没有不同,发布者和订阅者就像是在直接通信,接口代表的是客户(发布者)和服务器(订阅者)之间的合约,但IceStorm会透明地把每个消息转发给多个接收者。IceStorm不会对发布者和接收者使用的是否是兼容的接口进行检验,因此应用必须确保正确地使用主题。发布者和订阅者通过主题联系在一起,主题发布后会在leeStorm服务器的数据库中形成主题列表,记录中包含发布者地址,并将工作转交给IceStor。m的主题管理器(TopicManager)。订阅者可以发送请求订阅列表中存在的任何主题,服务器适配器端口侦听到请求后建立发布者与订阅者之间的链接后开始传输数据。在这个过程中,对订阅者要发送订阅请求和接收订阅到的主题内容,对发布者要发布主题信息和给订阅者传送主题内容,两者都要实现双向的数据通讯。这种传输方式只能适应于局域网内部的数据传输,一旦遇到防火墙就无法实现。3防火墙解决方案Glacier’Glacier是Ice防火墙服务,他能让客户与服务器通过防火墙安全地进行通信,且又不牺牲安全性。客户一服务器之间的通信数据使用公钥证书进行了完全的加密,并且是双向的。Glacier用于Ice应用的路由器一防火墙,对客户和服务器(或防火墙管理员)影响也很小,(jIacier变成了Ice应用的服务器防火墙。服务器不知道Glacier的存在,也无需为了使用Glacie,‘而做出任何修改。从服务器的角度看,Glacier。只是一个本地客户(10caklien!.),因此服务器也不需要通告他们创建的代理中的“公开”端点了。网络应用中经常要从服务器回调客户,目的常是发送通知(比如长时间进行的计算已完成,或对数据库记录进行了改动)。遗憾的是,在复杂的网络环境中支持回调会带来一组与此相关的问题,特别是穿越局域网防火墙。Ice-使用Glacier路由器和双向连接克服了这些困难。服务器无需为了进行回调而建立与客户的新连接。换句话说,服务器对客户的回调会在客户与服务器之间的已有连接上发送,从而消除了在客户防火墙中支持回调所需的管理工作。常规的无路由的连接只允许请求单向流动(从客户到服务器),而双向连接通过客户与服务器之间的已有连接创建了一个回到客户的虚拟连接能够让请求双向流动。收到回调的客户也是服务器,因此必须有对象适配器。如图1所示,客户端程序运行后设置客户端通信器属性,客户有一个带路由的指向服务器的代理,并发出了一个调用。一个通往路由器的客户端点的连接被建立起来.请求被发往路由器。路由器使用来自客户的代理的信息,建立一个通往服务器的连接,并且转发请求,请求中的参数之一是一个代理,指向客户中的回调对象。服务器对客户进行回调。要想成功回调,回调对象的代理必须含有能被服务器访问的端点。回到客户的惟一一路径是经过路由器,因此代理含有路由器的服务器端点。服务器连接到路由器,并发送请求。路由器通过已建立的双向连接把回调请求转发到客户。图中的箭头表示的是请求的流向,标号①~④为请求连接和回调的步骤,在路由器和服务器之间使用了2个连接是因为服务器不知道有路由器,他没有使用有路由的代理,因此没有使用双向连接。lr——I——图1Glacier服务器的双向连接4消息服务lceStorm的改进为了使IceStorm可以穿越防火墙进行消息发布j订阅,将Glacier和IceSt。rm服务结合放在同一台PC机上,同时将与Glacier服务器的服务器端点对应的服务器也移到同台Pc机上,整个作为传输服务器。如图2所示,真正的订阅在本地,即传输服务器内部。首先由发布者发布消息主题,在服务器【{I形成主题列表。后订阅者发送订阅主题,并与传输服务器建立双向连接,服务器内部实现对该主题的订阅.订阅成功则与发布者建立连接,接收该主题对应的数据,缓存后利用回调函数发送给订阅者。73
阅读此文(图):
点击此处在线翻阅