张宝 李学军
[摘要]本文描述了物流系统中单点监控存在的弊端,分析了多点实时监控的需求,在此基础上提出了基于WCF及C/S架构实现此功能的思路,并结合原有的系统架构,开发出高架库调度多点实时监控软件,并成功应用于绵阳分厂的物流系统。
[关键词]WCF;C/S架构;物流系统;多点监控;
[中图分类号]C931.6 [文献标识码]A [文章编号]1672-5158(2013)06-0011-02
绵阳烟厂物流系统已经正常运行两年,调度系统采用的是单点监控的方式,其结构如图1所示。
从(图1)可以看出,只能一个用户对调度系统进行监控。但是在发生故障时,通常需要多个人员协同处理,并需要查看系统状况,会造成争抢资源的情况。故实现物流调度系统的多点实时监控后,可以满足管理、维修及操作等人员对物流设备现场运行情况的动态掌控需求,有效提高企业工作效率,减少因为物流调度系统反复切换引起误操作而造成的设备损坏和人身伤害。
本文描述了WCF技术在分布式系统中的优势,分析了B/S和C/S架构的特点,结合实际需求得出c/s架构实用于该系统的结论。设计并实现了基于WCF及C/S架构的多点监控软件。
1、分布式模型与WCF技术
WCF是构建安全可靠的事务性服务的统一框架,提供了对可靠性、事务性、并发管理、安全性以及实例激活等技术的有力支持。
在客户端,分布式应用通过一个代理来转发对宿主端所提供服务的调用,而代理拥有和服务相同的操作接口。这就意味着客户端不会直接调用服务,即便这个服务就在本机的内存中。当客户端代理接收到来自客户端的调用请求后,它将消息通过信道链向下传递。每个信道都会执行相应消息的调用前处理,例如对消息的编码、提供可靠的会话、对消息进行加密等。客户端的最后一个信道则是传输信道,根据配置的传输方式发送消息给宿主。
在宿主端,消息同样通过信道链进行传输。与客户端信道相对应,宿主端信道也会对消息执行相应的宿主端的调用前处理,例如对消息的解码、提供会话管理、对消息进行解密等。宿主端的最后一个信道则负责将消息发送给消息分发器(Dispatcher),由分发器负责调用服务的实例。
作为基于SOA的一个框架产品,WCF最重要的就是能够快捷的创建一个服务(Service)。
Service Class:一个标记了[Servicece Contract]Attribute的类,在其中可能包含多个方法。除了标记了一些WCF特有的Attribute外,这个类与一般的类没有什么区别。
1、Host(宿主):可以是应用程序,进程如Windows Service等,它是WCF Service运行的环境。
2、Endpoints:可以是一个,也可以是一组,它是WCF实现通信的核心要素。
一个Endpoint由三部分组成:Address,Binding,Contract,将这三部分称为是Endpoint的ABcs。Address~Endpoint的网络地址,它标记了消息发送的目的地。Binding描述的是如何发送消息,例如消息发送的传输协议(女HTCP,HTTP),安全(女HSSL,SOAP消息安全)。Contract则描述的是消息所包含的内容,以及消息的组织和操作方式,例如是one-way,duplex和request/reply。Endpoint中的ABcs分别代表的含义就是:where,how,what。当WCF发送消息时,通过address知道消息发送的地址,通过bjnding知道怎样来发送它,通过contract则知道发送的消息是什么。
2、C/S架构
C/S结构,即Client/Server(客户机/服务器)结构,通过将任务合理分配到Ciient/NServer端,降低了系统的通讯开销,可以充分利用两端硬件环境的优势。B/S结构,即Browser/Server(浏览器/服务器)结构,是对C/S结构的一种变化或者改进的结构。在这种结构下,用户界面完全通过WWW浏览器实现,一部分事务逻辑在前端实现,但是主要事务逻辑在服务器端实现,形成所谓3 tier结构。B/S结构,主要是利用WWW浏览器技术,结合浏览器的多种Script语言(VBScript、JavaScnpt)和ActiveX技术,用通用浏览器就实现了需要复杂专用软件才能实现的强大功能,并节约了开发成本。考虑到物流系统多点实时监控具备以下特点:
(1)建立在专用的网络上,小范围里的网络环境,局域网之间再通过专门服务器提供连接和数据交换服务。
(2)注重流程,处理用户面固定的需求。
(3)客户端实现与服务器的直接相连,没有中间环节,需要快速响应。
(4)需要较强的事务处理能力。
(5)B/S架构服务器压力大,C/S架构数据处理在客户端完成,可以减轻服务器的压力。
所以在本系统中采用C/S架构是最佳方案。
3、多点监控结构设计及业务流程
物流系统多点实时监控由数据广播模块、WCF通讯模块,C/S客户端模块组成。
数据广播模块功能用于实时发布系统运行数据至各个终端,wCF通讯模块用于查询信息的获取达到多点监控的实现,C/S客户端模块用于实时显示与服务器一致的动态画面、设备运行情况、物料信息等。在MicrosoftVisual Studio 2010开发环境中采用C#语言实现数据广播模块、WCF通讯模块、C/S客户端模块。数据广播模块向特定网络地址段,持续发布物流数据;c/s客户端只要存在于该网络地址段,就可以持续接收物流数据,并显示实时动画;当客户端需要获取特定数据时,通过wCF通讯模块,即可从服务器端获取相应物料的具体信息。
4、多点监控的实现
在Microsoft Visual Studio 2010开发环境中采用C#语言实现。调度系统采用UDP协议向两个指定网段的客户端发送广播数据。当客户端需要主动获取数据,通21wCF远程调用调度服务端的服务。调度端周期性的发送调度状态广播数据,程序流程图如图2所示。特定网段上的客户端都可以接收到调度状态数据,接收数据及处理数据的程序流程图如下:
(1)多点监控的实现
在Microsoft Visual Studio 2010开发环境中采用C#语言实现。调度系统采用UDP协议向两个指定的网段的客户端发送广播数据。当客户端需要主动获取数据,通过WCF远程调用调度服务端的服务。
用户在客户端上操作时,客户端主动发起数据请求,这是通过调用服务端的WCF服务实现的。以上内容完整实现了服务端发出数据广播、客户端接收数据广播,客户端发出远程调用、服务端提供服务的功能,即实现了从服务端到客户端和从客户端到服务端的双向通信。
结论
该系统已在绵阳卷烟厂运行数月,并取得了应用上的成果。多点实时监控能有效地提高了调度系统的工作效率;能够成功实现物流调度系统的多点实时监控,可以满足管理、维修及操作等人员对物流设备现场运行情况的动态掌控需求,有效提高企业工作效率,减少因为物流调度系统反复切换引起误操作而造成的设备损坏和人身伤害。
参考文献
[1]张海藩,软件工程导论[M],清华大学出版社
[2]duv&l; LowyCWCF SePvice编程[M1,英文影印版,南京:东南大学出版社,2007
[3]蒋金楠,WCF技术剖析[M],北京:电子工业出版社,2009
[4]翁浩海,张玉润,徐恩来,基于B/S、C/S综合架构的化工企业管理信息平台的开发与研[J]化工自动化及仪表,2002年第2期,10-14