紀洲鵬,趙斐斐,耿 強,陳顯軍
(海口經(jīng)濟學院 a.網(wǎng)絡學院; b.公共課部, ???571127)
【信息科學與控制工程】
基于WCF多層架構的M-Commerce系統(tǒng)設計與應用
紀洲鵬a,趙斐斐b,耿 強a,陳顯軍a
(??诮?jīng)濟學院 a.網(wǎng)絡學院; b.公共課部, 海口 571127)
針對軟件開發(fā)普遍存在的系統(tǒng)結構復雜,開發(fā)效率不高和系統(tǒng)移植性、擴展性和維護性較差等問題,提出一套基于WCF的.NET多層架構開發(fā)模式的整體項目解決方案。在保持傳統(tǒng)3層架構設計的頁面表示層、基本邏輯層和數(shù)據(jù)訪問層的設計及代碼不變的基礎上,增加Web服務層,使用WCF技術對傳統(tǒng)3層架構進行封裝和擴展,給出一套由傳統(tǒng)3層架構向基于服務架構SOA無縫轉(zhuǎn)換的多層架構整體解決方案。該解決方案可以創(chuàng)建新的分布式項目,或者有效重組過去所投資的基于傳統(tǒng)3層架構設計開發(fā)的系統(tǒng)軟硬件,使之再利用并賦予其新的價值,降低成本。結合當前流行的移動商務項目,實際應用此解決方案有效。
多層架構;WCF技術;Web服務;移動商務
WCF(Windows Communication Foundation)即Windows通訊接口,它是微軟專門針對SOA提供的一個分布式框架,一款真正面向服務的產(chǎn)品,功能上完全可以看作是.Net Remoting,Enterprise Service,MSMQ等技術的并集,是真正的面向Web Service的通信接口,利用WCF,可以解決包括安全、可信賴、互操作、跨平臺通信等需求。
多層架構開發(fā)模式基于分層的思想,層與層之間隱藏了內(nèi)部實現(xiàn)的細節(jié),對外只提供一個統(tǒng)一的接口,上層使用下層提供的服務,下層對上層提供服務,且不依賴于上層,多層架構開發(fā)模式符合軟件開發(fā)過程中模塊獨立化,高內(nèi)聚,低耦合的原則,具有更強的可移植性、可擴展性和可維護性,提高項目的開發(fā)效率。
近些年,多層架構的研究也取得較大的進展。分層模式的關鍵點在于確定依賴,即通過分層,可以限制子系統(tǒng)間的依賴關系,使系統(tǒng)以更松散的方式耦合,從而更易于維護[1-4]。針對不同的項目,應當對通用的3層架構進行適當?shù)臄U展,以此增強軟件框架的靈活性以及對客戶的需求變化提供良好的支持[5],并且使用相應的測試方法指導軟件測試的過程,及時發(fā)現(xiàn)軟件開發(fā)過程中潛藏的問題,更有效保證程序的質(zhì)量[6]。另外,基于.NET Web服務和Java技術的3層架構開發(fā)模式也有了一定的發(fā)展[7-9]。SOA架構有著粗粒度和松散耦合等特點,在分布式系統(tǒng)設計與開發(fā)中發(fā)揮重要的作用[10]。
近些年來,使用WCF構建多層SOA的應用型架構鮮有探討,真正落地的項目或者案例并不多見,鑒于此,在傳統(tǒng)3層架構基礎上,并且在不改變原來3層架構的前提下,增加服務層,使用WCF技術進行重新封裝,給出一套基于WCF多層架構的適應于多數(shù)信息系統(tǒng)的整體解決方案,具有一定的理論與實際意義。
1.1 WCF多層架構的4個層次
基于WCF的多層架構將系統(tǒng)分為4個層次,分別是數(shù)據(jù)訪問層、基本邏輯層、Web服務層和頁面表示層。
數(shù)據(jù)訪問層對數(shù)據(jù)訪問邏輯進行抽象,引入“抽象工廠模式”,根據(jù)數(shù)據(jù)庫的不同,提供實現(xiàn)不同數(shù)據(jù)庫結構的數(shù)據(jù)邏輯對象,使用.Net框架的反射機制,在系統(tǒng)運行時動態(tài)決定調(diào)用的數(shù)據(jù)庫類型,以此對不同的數(shù)據(jù)庫(SQL Server,Oracle等)進行統(tǒng)一的管理。通過封裝類調(diào)用數(shù)據(jù)庫的存儲過程,實現(xiàn)對數(shù)據(jù)庫的存取操作,即對數(shù)據(jù)庫的查詢、更新,增加和刪除等操作,同時,為上層基本邏輯層提供統(tǒng)一的調(diào)用接口。
基本邏輯層是系統(tǒng)的邏輯處理中心,主要負責系統(tǒng)的業(yè)務邏輯和規(guī)則。系統(tǒng)的邏輯處理都被抽象為本層的不同的接口。邏輯層接口處于數(shù)據(jù)訪問層和Web服務層之間,對上層提供接口調(diào)用,調(diào)用下層數(shù)據(jù)訪問層接口連接數(shù)據(jù)庫,降低了層與層之間的耦合度。
Web服務層使用Data Contract、Fault Contract、Service Contract描述系統(tǒng)提供的各種服務。 Web服務層接口使用WCF技術重新封裝基本邏輯層接口,實現(xiàn)網(wǎng)絡通信的需要,為上層頁面表示層提供服務。
頁面表示層負責接收界面輸入和處理結果的顯示。包括頁面的布局、控件的使用等。頁面表示層調(diào)用Web服務層的接口進行邏輯處理。系統(tǒng)邏輯處理發(fā)生變化時,保持Web服務層接口不變,只需要修改基本邏輯層接口實現(xiàn),不會影響頁面表示層的編碼。
1.2 M-Commerce系統(tǒng)主要功能介紹
移動商務作為一種新興的電子商務交易模式,其發(fā)展正在超越傳統(tǒng)的電子商務,移動商務通過手機、PDA、掌上電腦等手持移動終端隨時隨地可以從事各種商務活動,基于SOA的Web Service是當下比較流行的訪問方式。
M-Commerce系統(tǒng)是應用于手機金融業(yè)務的平臺。系統(tǒng)主要功能包括:用戶管理、手機用戶管理、支付賬戶管理、商家管理、終端管理、交易事務管理、前端管理和后端管理等。用戶通過手機等智能終端設備使用預置賬戶進行商品買賣等活動;商家通過銷售終端提供商品服務,使用Epos(Web Application)查看交易和資金管理;系統(tǒng)管理員和相關業(yè)務人員通過處理中心(Processing Center)的Admin Tool(Web Application)進行M-Commerce系統(tǒng)的配置和監(jiān)管;銀行通過后端(Windows Application)進行手機和商家賬戶的管理。
1.3 M-Commerce系統(tǒng)多層架構的設計
M-Commerce系統(tǒng)使用快速開發(fā)模型和瀑布模型進行項目管理,使用多層架構進行設計。多層架構將系統(tǒng)分為4個層次,即數(shù)據(jù)訪問層、基本邏輯層、Web服務層和頁面表示層。M-Commerce系統(tǒng)的整體架構和多層架構分別見圖1和圖2。
圖1 系統(tǒng)整體架構
圖2 系統(tǒng)多層架構
2.1 實現(xiàn)的主要策略
系統(tǒng)實現(xiàn)的主要策略包括訪問控制策略、并行開發(fā)策略、版本控制策略和每日構建策略等。
系統(tǒng)的訪問控制策略使用基于用戶角色的訪問控制策略。這種訪問控制策略已經(jīng)廣泛應用于系統(tǒng)操作、數(shù)據(jù)庫及應用項目中。角色訪問控制策略有利于確認和管理用戶身份,對不同用戶分配不同的操作權限。
多層架構結構清晰,將各有特長的人員合理的分配到不同的層次中,保證系統(tǒng)的并行開發(fā),提高開發(fā)效率和代碼質(zhì)量。
項目開發(fā)過程中,使用MSBuild編寫腳本,Cruise Control.net進行每日構建。搭建TRAC服務器,整合每日構建(CC.net)、版本控制(Subversion)、單元測試(NUnit)、集成測試,功能測試、系統(tǒng)測試、覆蓋率檢測(NCoverage)等完成項目的自動編譯、測試和發(fā)布等工作。
2.2 基于WCF的多層架構解決方案
M-Commerce系統(tǒng)解決方案較為復雜,集C/S和B/S于一體,包括配置(Config)、數(shù)據(jù)庫(Database)、項目發(fā)布(Deployment)、前后端應用(External Application,Web)、源代碼(Source)和測試(Test)等文件夾。解決方案共有63個項目,如圖3所示。
其中,Config文件夾包含的類庫項目負責測試相關配置;Database文件夾包含的類庫項目負責后端(BackEnds)和處理中心(Processing center)數(shù)據(jù)庫的創(chuàng)建;Department文件夾包含的項目負責M-Commerce系統(tǒng)的發(fā)布;ExternalApplication和Web文件夾包含的項目分別負責后端和AdminTool系統(tǒng)的頁面表示層;Tests文件夾包含的類庫項目負責系統(tǒng)的測試;Source文件夾包含的類庫項目為多層架構設計源代碼。SourceSource文件夾包含Back Ends、Listener、MCommerce、Resource DataAccess、Service Interface和Service References 6個文件夾,是整個項目的核心內(nèi)容。Back Ends文件夾包含的類庫項目與MCommerce文件夾包含的項目類似,又分為基本邏輯層(Business Logic)、數(shù)據(jù)訪問層(Resource DataAccess)、Web服務層(Service Interface)。其中,BusinessEntities為實體類設計,Lib包含系統(tǒng)公共接口及異常(Exception)處理。解決方案各個子項目如圖4~圖9所示。
圖3 系統(tǒng)解決方案
圖4 Config
圖7 External Application
圖8 AdminTool
2.3 傳統(tǒng)3層架構設計
數(shù)據(jù)庫的設計是M-Commerce系統(tǒng)的重要組成部分,滿足到第三范式。系統(tǒng)包含兩個數(shù)據(jù)庫,一個是Back-end數(shù)據(jù)庫,一個是處理中心(PC)數(shù)據(jù)庫,其中,PC數(shù)據(jù)庫涉及22個表,37個存儲過程以及視圖和函數(shù)等,這里不一一列舉。數(shù)據(jù)庫部分表的關系圖如圖10所示。
數(shù)據(jù)訪問層負責數(shù)據(jù)庫的連接及數(shù)據(jù)存取操作,涉及IStorages接口的設計和實現(xiàn),Storages調(diào)用Wrapper封裝類,Wrapper類中封裝數(shù)據(jù)庫中相應存儲過程的調(diào)用。
基本邏輯層負責系統(tǒng)業(yè)務邏輯IManagers接口的設計與實現(xiàn)?;具壿媽觢ib類庫存放系統(tǒng)公有方法。實體類(BusinessEntities)通過DataAccessUtil中公有靜態(tài)類實現(xiàn)數(shù)據(jù)庫中記錄與實體類的映射。由此,數(shù)據(jù)庫與.NET平臺可以并行開發(fā),兩者開發(fā)完成之后,通過映射集成在一起即可。
圖9 Source
圖10 PC數(shù)據(jù)庫部分表的設計
2.4 使用WCF技術對傳統(tǒng)3層架構的封裝及擴展
Web服務層負責Service Interface的設計與實現(xiàn),需為傳統(tǒng)3層架構設計開發(fā)的后端(BE)、前端(FE)和處理中心(PC)分別設計契約(Contrac)和接口(Service Implementation),其中Web服務層契約包括:數(shù)據(jù)契約(Data Contract)、錯誤契約(Fault Contract)和服務契約(Service Contract)。
僅以PC的Operator為例進行相關介紹。
1) Data Contract實現(xiàn)代碼為:
[DataContract(Namespace= "http://mCommerce.DataContracts/2016/12",Name = "OperatorRequest")]
public class OperatorRequest:Request
{
private OperatorWS m_OperatorWS;
[DataMember(IsRequired = true,Name = "OperatorWS",Order = 0)]
public OperatorWS OperatorWS
{
get { return m_OperatorWS; }
set { m_OperatorWS = value; }
}
}
其中,DataContractAttribute是WCF使用數(shù)據(jù)契約進行序列化的一種方式,在需要進行序列化的OperatorRequest數(shù)據(jù)上加上DataContract屬性之后,.Net本身會實現(xiàn)schema,即XSD和CRL類型之間的轉(zhuǎn)換。需要提供顯示的Namespace和Name;Request 是一個公有的抽象類契約,OperatorRequest 繼承實現(xiàn)Request;OperatorWS是服務實體類,定義set和get方法。
2) Fault Contract實現(xiàn)代碼為:
[System.Runtime.Serialization.DataContract Attribute (Namespace= "http://mCommerce.FaultContracts/2016/12",Name = "DefaultFaultContract")]public class DefaultFaultContract
{
private string m_ErrorMessage;
…
[System.Runtime.Serialization.DataMemberAttribute(IsRequired = true,Name = "ErrorMessage",Order = 1)]
public string ErrorMessage
{
get { return m_ErrorMessage; }
set { m_ErrorMessage = value; }
}
}
其中,DataMemberAttribute用于標記DefaultFaultContract契約中需要參與序列化的具體成員(ErrorMessage),即明確其在SOAP(簡單對象訪問協(xié)議)中的名稱。除了ErrorMessage,還有ErrorId,CorrelationId字段,表示預設的錯誤提示。
3) Service Contract實現(xiàn)代碼為:
[ServiceContract(
Namespace = "http://mCommerce.PC.ServiceContracts/2016/12",
Name = "IOperatorService",SessionMode = SessionMode.Allowed)]
public interface IOperatorService
{
[FaultContract(typeof(DefaultFaultContract))]
[OperationContract(
IsTerminating = false,
IsInitiating = true,
IsOneWay = false,
AsyncPattern = false,
Action = "CreateOperator")]
OperatorResponse CreateOperator(OperatorRequest request);
}
其中,F(xiàn)aultContract 指定錯誤契約類型;OperationContract 指定服務契約具體的操作名稱。Web服務層接口定義Operator的增刪改查方法。這里只給出增加記錄方法。
4) Service Implementation實現(xiàn)代碼為:
[ServiceBehavior(
Name = "OperatorService",
Namespace = "http://mCommerce.ServiceContracts/2016/12")]
public class OperatorService:IOperatorService
{
OperatorResponse IOperatorService.CreateOperator(
OperatorRequest pOperatorRequest)
{
OperatorResponse response = new OperatorResponse();
using(new RequestResponseLogger(pOperatorRequest,response))
{return ExceptionHandler
.GuardAndRespond
pOperatorRequest,
delegate
{
Operator my Operator=pOperatorRequest.OperatorWS.ToOperator();
myOperator = Managers.Operator.CreateOperator(
Storage.Operator,myOperator);
response.OperatorWS =
new OperatorWS(myOperator);
return response;
});
}
}
} Web服務層的OperatorService須實現(xiàn)IOperatorService接口的所有方法。其中,使用委托(delegate)調(diào)用相關方法。pOperatorRequest.OperatorWS.ToOperator()及實例化OperatorWS構造函數(shù)實現(xiàn)Web服務層服務實體類(ServiceEntities)與傳統(tǒng)3層架構中的基本邏輯層實體類(BusinessEntities)的映射。Managers.Operator.CreateOperator()方法調(diào)用傳統(tǒng)3層架構中的業(yè)務邏輯方法。基本邏輯層接口(IMangers)實現(xiàn)Mangers調(diào)用數(shù)據(jù)訪問層接口(IStorages)的實現(xiàn)Storages中的方法,Stroages調(diào)用Wrapper封裝類,Wrapper調(diào)用封裝的存儲過程將Operator存入數(shù)據(jù)庫表中。
由此可見,Web服務層與傳統(tǒng)3層架構的設計與開發(fā)可并行開發(fā),并且不影響傳統(tǒng)3層架構設計開發(fā)方法。當3層架構設計開發(fā)完畢之后,通過契約和Web服務接口重新封裝對基本邏輯層實體類和接口的調(diào)用即可。
頁面表示層與常規(guī)設計開發(fā)方法一致,其調(diào)用Web服務層接口實現(xiàn)相關服務。
2.5 M-Commerce系統(tǒng)界面
M-Commerce系統(tǒng)包含商家、商家終端和銀行等后端(Windows application),每個后端均包含前臺和后臺系統(tǒng),通過AdminTool(Web application)進行用戶、后端、操作人員和交易等相關配置和管理。M-Commerce系統(tǒng)中的AdminTool界面如圖11~圖15所示。
圖11 用戶管理界面
圖12 商家管理界面
圖13 后端管理界面
圖14 操作人員管理界面
圖15 交易管理界面
在傳統(tǒng)3層架構的基礎上,結合移動商務系統(tǒng),提出一套適應于多數(shù)信息系統(tǒng)設計與開發(fā)的多層架構項目解決方案,給出多層架構在項目中的具體設計和實現(xiàn)方法以及項目實現(xiàn)的主要策略。
結合WCF技術探討Web服務層對傳統(tǒng)3層架構的擴展及實現(xiàn)。解決方案力求使傳統(tǒng)3層架構開發(fā)方法保持不變或者盡量少做修改,以保持軟件架構設計和開發(fā)方案的繼承性和延續(xù)性。Web服務層接口的設計及實現(xiàn)相對復雜,今后研究中,對多層架構進行整體精簡和優(yōu)化,使之更易于應用于實踐。
[1] PARVEEN A,HABIB S,SARWAR S.Mobile Commerce-New Way to Business[J].International Journal on Research & Development A Management Review,2012,1(1):37-40.
[2] 梁智,高博.基于“.Net”技術與三層架構的高校多媒體設備管理系統(tǒng)的設計與實現(xiàn)[J].重慶工學院學報(自然科學),2009,23(12):116-119.
[3] 黃光芳.面向接口編程在三層架構系統(tǒng)中的設計及應用[J].計算機應用與軟件,2009,26(6):133-135.
[4] 堯怡隴,葉松,王敬東,等.基于接口多層架構的WTTVS實時監(jiān)控管理系統(tǒng)設計[J].計算機應用與軟件,2014,31(6):29-31.
[5] 郝雯,艾玲梅,王映輝.三層結構軟件框架擴展點實現(xiàn)方法[J].計算機應用,2009,29(9):2541-2545.
[6] 周端陽,王猛.基于三層體系結構的單元測試框架研究與實現(xiàn)[J].計算機應用,2010,30(8):2189-2192.
[7] 鄧桂英,李桂蕓.基于組合Web服務的電子商務解決方案[J].計算機應用與軟件,2009,26(12):139-142.
[8] 何志學,莊連英,斯慶巴拉.基于J2ME-J2EE平臺的移動電子商務系統(tǒng)的實現(xiàn)[J].北華航天工業(yè)學院學報,2011,21(5):13-15.
[9] 賈佳.基于.NET的移動電子商務系統(tǒng)客戶端的設計[J].計算機科學,2011,38(10):163-165.
[10]梁繼剛,郭凌,劉凌.基于SOA的數(shù)字后勤日常業(yè)務信息系統(tǒng)設計[J].四川兵工學報,2015,36(4):92-95.
(責任編輯 楊繼森)
Design and Application of M-Commerce System Based on WCF and Multi-Layer Architecture
JI Zhou-penga, ZHAO Fei-feib, GENG Qianga, CHEN Xian-juna
(a.Networking Academic; b.Public Courses Department, Haikou College of Economics, Haikou 571127, China)
Focusing on solving the ubiquitous issues in software development such as complexity of software architecture, low development efficiency, bad portability, scalability and maintainability, a set of overall project solution based on WCF, net and multi-layer architecture development mode is proposed. On the basis of the architecture design and code of presentation layer, basic logic layer and data access layer of traditional three-layer architecture remaining the same, a new web service layer is added and WCF technology is applied to the encapsulation and extension of traditional three-layer architecture, and a set of overall project solution of multi-layer architecture seamless transformation from traditional three-layer architecture to service architecture SOA is given. This solution can create a new distributed project, or it can effectively reorganize the past investment of the software and hardware based on the traditional three layer architecture, and reuses it, and gives it new value and reduces the cost. Combined with the popular M-Commerce project at present, the project solution has good application efficiency.
multi-layer architecture; windows communication foundation technology; Web service; mobile commerce
2016-12-25;
2017-01-22 基金項目:海南省自然科學基金項目(20156239,613169);海南省教育科學“十三五”規(guī)劃課題(QJY13516052);校級科研重點項目(hjkz15-02)
紀洲鵬(1982—),男,碩士,副教授,主要從事數(shù)據(jù)挖掘與軟件工程研究。
趙斐斐(1982—),女,碩士,副教授,主要從事模糊控制研究。
10.11809/scbgxb2017.05.020
format:JI Zhou-peng,ZHAO Fei-fei,GENG Qiang,et al.Design and Application of M-Commerce System Based on WCF and Multi-Layer Architecture[J].Journal of Ordnance Equipment Engineering,2017(5):87-93.
E919;TP3
A
2096-2304(2017)05-0087-07
本文引用格式:紀洲鵬,趙斐斐,耿強,等.基于WCF多層架構的M-Commerce系統(tǒng)設計與應用[J].兵器裝備工程學報,2017(5):87-93.