隨著軟件設(shè)計(jì)思想的發(fā)展,基于面向服務(wù)思想進(jìn)行程序設(shè)計(jì)是目前的主流思想。本文主要介紹了一種基于微軟WCF技術(shù)設(shè)計(jì)的分布式任務(wù)處理的系統(tǒng)框架。
【關(guān)鍵詞】WCF 分布式
從軟件性能和擴(kuò)展性角度考慮,傳統(tǒng)的只能運(yùn)行在單臺(tái)機(jī)器上的客戶端程序,由于受制于單臺(tái)機(jī)器資源和單個(gè)程序進(jìn)程所能使用的系統(tǒng)資源的限制,無法滿足多任務(wù)處理的需要。基于面向服務(wù)思想設(shè)計(jì)的應(yīng)用程序(SOA)由于其良好的擴(kuò)展性,目前是業(yè)界流行的一種程序架構(gòu)。為了實(shí)現(xiàn)這種架構(gòu),選擇一種能很好實(shí)現(xiàn)客戶端與服務(wù)之間通信的技術(shù),是最為關(guān)鍵的。
1 WCF簡介
WCF全稱為Windows Communication Foundation。是微軟公司推出的一個(gè)完全基于SOA的通信框架。在過去若干年中,微軟先后推出了一系列分布式通信技術(shù),比較典型的包括COM/DCOM、.NET Remoting、XML Web服務(wù)、MSMQ(消息隊(duì)列)等,這些技術(shù)各有優(yōu)劣,目前也都被開發(fā)人員選擇并使用。而WCF就是各種分布式技術(shù)的集大成者,它將微軟之前提供的各種分布式通信技術(shù)完全整合在一起,提供了一套統(tǒng)一的API。
1.1 WCF的優(yōu)點(diǎn)
(1)它是可互操作的;
(2)WCF服務(wù)的提供增強(qiáng)的可靠性和安全性;
(3)WCF具有內(nèi)置在記錄機(jī)制,而在其他技術(shù)中,必須做必要的編碼;
(4)WCF集成AJAX和支持JSON(JavaScript對(duì)象表示法);
(5)提供可擴(kuò)展性可支持出新的Web服務(wù)標(biāo)準(zhǔn);
(6)具有極其強(qiáng)大的默認(rèn)安全機(jī)制。
2 框架的設(shè)計(jì)
2.1 設(shè)計(jì)原則
2.1.1 擴(kuò)展性
擴(kuò)展性包括兩方面:
(1)單個(gè)服務(wù)的性能擴(kuò)展部署 這里主要是指對(duì)于多任務(wù)處理的時(shí)候,如果單個(gè)處理進(jìn)程的性能已經(jīng)無法滿足實(shí)時(shí)處理的需要時(shí),需要能夠通過增加處理進(jìn)程或者增加服務(wù)器的方式,快速部署服務(wù),而新部署的服務(wù),不需要修改代碼,只需要進(jìn)行簡單的配置,就可以與之前的服務(wù)一樣,對(duì)任務(wù)進(jìn)行處理。
(2)增加新的服務(wù)類型 這里主要是指,當(dāng)系統(tǒng)需要增加新的任務(wù)類型的時(shí)候,不需要去修改原有服務(wù)的代碼,只需要開發(fā)新的服務(wù)程序并部署,就可以實(shí)現(xiàn)對(duì)新類型任務(wù)的處理。
2.1.2 穩(wěn)定性
為了確保程序的穩(wěn)定性,最好的方法就是讓一個(gè)程序?qū)W⒅蛔鲆患虑?,這樣就可以避免因?yàn)橐粋€(gè)程序因?yàn)橐獔?zhí)行很多類操作,而造成代碼邏輯混亂,降低了穩(wěn)定性。
2.1.3 容錯(cuò)性
當(dāng)程序出現(xiàn)異常時(shí),程序本身的設(shè)計(jì)必須有一定的容錯(cuò)性,如:程序自檢、重啟等,都是提高容錯(cuò)性的設(shè)計(jì)思路。
基于以上的設(shè)計(jì)原則,對(duì)于分布式任務(wù)處理的框架設(shè)計(jì)如下:
圖1中的除了客戶端程序之外的方框顯示的就是一個(gè)完整的分布式任務(wù)處理的框架圖。
2.2 框架組成和各個(gè)部分的功能
中心服務(wù)——整個(gè)框架的核心部件,對(duì)外提供各種服務(wù)接口,對(duì)內(nèi)實(shí)現(xiàn)對(duì)數(shù)據(jù)庫的訪問操作以及對(duì)各個(gè)任務(wù)處理服務(wù)的管理。
任務(wù)服務(wù)——任務(wù)服務(wù)與中心服務(wù)之間,通過WCF框架實(shí)現(xiàn)通信,任務(wù)服務(wù)可以根據(jù)自身配置的任務(wù)類別,通過中心服務(wù),從數(shù)據(jù)庫中取出需要處理的任務(wù)。在整個(gè)框架中,任務(wù)服務(wù)可以有多個(gè),多個(gè)任務(wù)服務(wù)可以通過配置,實(shí)現(xiàn)對(duì)同一類任務(wù)的處理,也可以實(shí)現(xiàn)對(duì)不同類任務(wù)的處理。
任務(wù)處理進(jìn)程——任務(wù)處理進(jìn)程類似于一個(gè)獨(dú)立的處理程序,是任務(wù)服務(wù)在取得待處理的任務(wù)之后,啟動(dòng)并進(jìn)行管理的。對(duì)任務(wù)的具體處理都是由任務(wù)處理進(jìn)程來完成的。同時(shí),任務(wù)處理進(jìn)程具有對(duì)數(shù)據(jù)庫進(jìn)行訪問的功能。在整個(gè)框架中,如果硬件資源足夠大的話,理論上每一個(gè)任務(wù)服務(wù)可以啟動(dòng)并管理無限個(gè)任務(wù)處理進(jìn)程。
數(shù)據(jù)庫——用來存儲(chǔ)系統(tǒng)數(shù)據(jù)的部件。
2.3 整個(gè)框架的運(yùn)行流程
在分布式任務(wù)處理的框架下,一個(gè)比較完整的運(yùn)行流程如圖2所示。
流程說明:
(1)用戶提交任務(wù)處理請(qǐng)求至中心服務(wù);
(2)中心服務(wù)將任務(wù)處理請(qǐng)求數(shù)據(jù)存入數(shù)據(jù)庫;
(3)任務(wù)服務(wù)判斷任務(wù)處理進(jìn)程是否已達(dá)最大值,若已達(dá)最大值,則等待一段時(shí)間后,再次進(jìn)行判斷,直至任務(wù)處理進(jìn)程數(shù)未達(dá)最大值,則進(jìn)入第(4)步;
(4)任務(wù)服務(wù)通過中心服務(wù),從數(shù)據(jù)庫中獲取任務(wù)數(shù)據(jù);
(5)任務(wù)服務(wù)啟動(dòng)一個(gè)新的任務(wù)處理進(jìn)程進(jìn)行任務(wù)處理;
(6)任務(wù)處理進(jìn)程根據(jù)預(yù)先設(shè)定的程序,對(duì)任務(wù)進(jìn)行處理;
(7)任務(wù)處理完畢,任務(wù)處理進(jìn)程更新數(shù)據(jù)庫;
(8)任務(wù)處理進(jìn)程將任務(wù)處理結(jié)果通知任務(wù)服務(wù)。
2.4 框架的優(yōu)點(diǎn)
這套分布式任務(wù)處理框架已經(jīng)應(yīng)用在實(shí)際的系統(tǒng)中,目前運(yùn)行非常穩(wěn)定。與傳統(tǒng)的單機(jī)軟件架構(gòu)相比,這套框架具有以下優(yōu)點(diǎn):
開發(fā)實(shí)現(xiàn)比較簡單 基于微軟提供的WCF框架的統(tǒng)一接口,整個(gè)框架的實(shí)現(xiàn)過程比較簡單。
擴(kuò)展性好 每個(gè)任務(wù)服務(wù)都是可以獨(dú)立部署的,每個(gè)任務(wù)服務(wù)的最大任務(wù)處理進(jìn)程都是可配置的,因此無論是開發(fā)新的類別的任務(wù)服務(wù),還是通過增加服務(wù)器的方式擴(kuò)大原有服務(wù)的處理能力,都是非常簡單的事情。
穩(wěn)定性和容錯(cuò)性好 整個(gè)框架的各個(gè)服務(wù)模塊都是獨(dú)立運(yùn)行的子程序,不會(huì)存在因?yàn)槟硞€(gè)服務(wù)出問題,而導(dǎo)致整個(gè)框架癱瘓,只需要重啟出問題的服務(wù)即可。
3 小結(jié)
基于面向服務(wù)思想進(jìn)行程序設(shè)計(jì)是目前軟件開發(fā)界的一個(gè)趨勢(shì),也是共識(shí),而微軟的WCF框架更使得這種框架設(shè)計(jì)思想的實(shí)現(xiàn)變得更加容易。因此,現(xiàn)在越來越多的程序設(shè)計(jì)人員會(huì)將兩者結(jié)合起來進(jìn)行框架設(shè)計(jì)工作。
參考文獻(xiàn)
[1]蔣金楠.WCF全面解析[M].北京:電子工業(yè)出版社,2013:1-7.
[2]徐雷,徐揚(yáng).WCF服務(wù)編程[M].武漢:華中科技大學(xué)出版社,2012:1-3.
作者簡介
唐亮(1982-),男,安徽省合肥市人。碩士學(xué)位。工程師,研究方向?yàn)檐浖O(shè)計(jì)。
陳向陽(1975-),男,湖北省麻城市人。大學(xué)專科學(xué)歷。工程師,研究方向?yàn)楹圹E專業(yè)。
鄭烽(1989-),男,湖北省黃州市人。大學(xué)本科學(xué)歷。初級(jí)工程師,研究方向?yàn)楹圹E專業(yè)。
作者單位
1.中國電子科技集團(tuán)公司第三十八研究所 安徽省合肥市 230088
2.安徽省公共安全應(yīng)急信息技術(shù)重點(diǎn)實(shí)驗(yàn)室 安徽省合肥市 230088
3.湖北省麻城市公安局 湖北省麻城市 438300