随着软件设计思想的发展,基于面向服务思想进行程序设计是目前的主流思想。本文主要介绍了一种基于微软WCF技术设计的分布式任务处理的系统框架。
【关键词】WCF 分布式
从软件性能和扩展性角度考虑,传统的只能运行在单台机器上的客户端程序,由于受制于单台机器资源和单个程序进程所能使用的系统资源的限制,无法满足多任务处理的需要。基于面向服务思想设计的应用程序(SOA)由于其良好的扩展性,目前是业界流行的一种程序架构。为了实现这种架构,选择一种能很好实现客户端与服务之间通信的技术,是最为关键的。
1 WCF简介
WCF全称为Windows Communication Foundation。是微软公司推出的一个完全基于SOA的通信框架。在过去若干年中,微软先后推出了一系列分布式通信技术,比较典型的包括COM/DCOM、.NET Remoting、XML Web服务、MSMQ(消息队列)等,这些技术各有优劣,目前也都被开发人员选择并使用。而WCF就是各种分布式技术的集大成者,它将微软之前提供的各种分布式通信技术完全整合在一起,提供了一套统一的API。
1.1 WCF的优点
(1)它是可互操作的;
(2)WCF服务的提供增强的可靠性和安全性;
(3)WCF具有内置在记录机制,而在其他技术中,必须做必要的编码;
(4)WCF集成AJAX和支持JSON(JavaScript对象表示法);
(5)提供可扩展性可支持出新的Web服务标准;
(6)具有极其强大的默认安全机制。
2 框架的设计
2.1 设计原则
2.1.1 扩展性
扩展性包括两方面:
(1)单个服务的性能扩展部署 这里主要是指对于多任务处理的时候,如果单个处理进程的性能已经无法满足实时处理的需要时,需要能够通过增加处理进程或者增加服务器的方式,快速部署服务,而新部署的服务,不需要修改代码,只需要进行简单的配置,就可以与之前的服务一样,对任务进行处理。
(2)增加新的服务类型 这里主要是指,当系统需要增加新的任务类型的时候,不需要去修改原有服务的代码,只需要开发新的服务程序并部署,就可以實现对新类型任务的处理。
2.1.2 稳定性
为了确保程序的稳定性,最好的方法就是让一个程序专注只做一件事情,这样就可以避免因为一个程序因为要执行很多类操作,而造成代码逻辑混乱,降低了稳定性。
2.1.3 容错性
当程序出现异常时,程序本身的设计必须有一定的容错性,如:程序自检、重启等,都是提高容错性的设计思路。
基于以上的设计原则,对于分布式任务处理的框架设计如下:
图1中的除了客户端程序之外的方框显示的就是一个完整的分布式任务处理的框架图。
2.2 框架组成和各个部分的功能
中心服务——整个框架的核心部件,对外提供各种服务接口,对内实现对数据库的访问操作以及对各个任务处理服务的管理。
任务服务——任务服务与中心服务之间,通过WCF框架实现通信,任务服务可以根据自身配置的任务类别,通过中心服务,从数据库中取出需要处理的任务。在整个框架中,任务服务可以有多个,多个任务服务可以通过配置,实现对同一类任务的处理,也可以实现对不同类任务的处理。
任务处理进程——任务处理进程类似于一个独立的处理程序,是任务服务在取得待处理的任务之后,启动并进行管理的。对任务的具体处理都是由任务处理进程来完成的。同时,任务处理进程具有对数据库进行访问的功能。在整个框架中,如果硬件资源足够大的话,理论上每一个任务服务可以启动并管理无限个任务处理进程。
数据库——用来存储系统数据的部件。
2.3 整个框架的运行流程
在分布式任务处理的框架下,一个比较完整的运行流程如图2所示。
流程说明:
(1)用户提交任务处理请求至中心服务;
(2)中心服务将任务处理请求数据存入数据库;
(3)任务服务判断任务处理进程是否已达最大值,若已达最大值,则等待一段时间后,再次进行判断,直至任务处理进程数未达最大值,则进入第(4)步;
(4)任务服务通过中心服务,从数据库中获取任务数据;
(5)任务服务启动一个新的任务处理进程进行任务处理;
(6)任务处理进程根据预先设定的程序,对任务进行处理;
(7)任务处理完毕,任务处理进程更新数据库;
(8)任务处理进程将任务处理结果通知任务服务。
2.4 框架的优点
这套分布式任务处理框架已经应用在实际的系统中,目前运行非常稳定。与传统的单机软件架构相比,这套框架具有以下优点:
开发实现比较简单 基于微软提供的WCF框架的统一接口,整个框架的实现过程比较简单。
扩展性好 每个任务服务都是可以独立部署的,每个任务服务的最大任务处理进程都是可配置的,因此无论是开发新的类别的任务服务,还是通过增加服务器的方式扩大原有服务的处理能力,都是非常简单的事情。
稳定性和容错性好 整个框架的各个服务模块都是独立运行的子程序,不会存在因为某个服务出问题,而导致整个框架瘫痪,只需要重启出问题的服务即可。
3 小结
基于面向服务思想进行程序设计是目前软件开发界的一个趋势,也是共识,而微软的WCF框架更使得这种框架设计思想的实现变得更加容易。因此,现在越来越多的程序设计人员会将两者结合起来进行框架设计工作。
参考文献
[1]蒋金楠.WCF全面解析[M].北京:电子工业出版社,2013:1-7.
[2]徐雷,徐扬.WCF服务编程[M].武汉:华中科技大学出版社,2012:1-3.
作者简介
唐亮(1982-),男,安徽省合肥市人。硕士学位。工程师,研究方向为软件设计。
陈向阳(1975-),男,湖北省麻城市人。大学专科学历。工程师,研究方向为痕迹专业。
郑烽(1989-),男,湖北省黄州市人。大学本科学历。初级工程师,研究方向为痕迹专业。
作者单位
1.中国电子科技集团公司第三十八研究所 安徽省合肥市 230088
2.安徽省公共安全应急信息技术重点实验室 安徽省合肥市 230088
3.湖北省麻城市公安局 湖北省麻城市 438300