隨著軟件設計思想的發展,基于面向服務思想進行程序設計是目前的主流思想。本文主要介紹了一種基于微軟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