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