[摘要] 傳統(tǒng)企業(yè)內(nèi)部存在很多不同平臺(tái)、不同數(shù)據(jù)庫(kù)、不同數(shù)據(jù)交換形式的信息系統(tǒng)。如何有效地整合這些信息系統(tǒng)、提高企業(yè)整體運(yùn)作效率已經(jīng)成為現(xiàn)代企業(yè)急需解決的問(wèn)題。本文提出了基于Web Services的企業(yè)應(yīng)用集成方案,實(shí)現(xiàn)了良好的間跨網(wǎng)絡(luò)、跨平臺(tái)通信,方便擴(kuò)展企業(yè)核心競(jìng)爭(zhēng)業(yè)務(wù)。
[關(guān)鍵詞] 企業(yè)應(yīng)用集成 Web Services .NET框架
一、引言
隨著分布式計(jì)算技術(shù)的迅速發(fā)展,企業(yè)的商務(wù)活動(dòng)和政府的政務(wù)活動(dòng)將越來(lái)越多地依靠Internet。傳統(tǒng)的分布式對(duì)象模型CORBA、DCOM、RMI不適用于極端異構(gòu)的Internet/Intranet環(huán)境。而數(shù)字時(shí)代的市場(chǎng)合并又提出了一些附加的問(wèn)題,即公司的聯(lián)合和兼并能夠指數(shù)升級(jí)地增加系統(tǒng)綜合的復(fù)雜性。基于XML技術(shù)的Web Services可以很好的解決企業(yè)應(yīng)用集成(EAI,Enterprise Application Integration)的問(wèn)題。
二、Web Services
1.Web Services的體系架構(gòu)
Web Services體系結(jié)構(gòu)基于三種角色(服務(wù)提供者,服務(wù)注冊(cè)中心和服務(wù)請(qǐng)求者)之間的交互,交互具體設(shè)計(jì)到發(fā)布、查找和綁定操作,這些角色和操作一起作用于Web Services 構(gòu)件。
2.Web Services核心技術(shù)
Web Services是一種面向服務(wù)的體系結(jié)構(gòu),其核心技術(shù)主要包括:XML(eXtensible Markup Language)、SOAP(Simple Object Access Protocol)、WSDL(Web Services Description Language)、UDDI(Universal Description、Discovery and Integration)。在.NET框架下,微軟通過(guò)SOAP協(xié)議在Web上提供軟件服務(wù),使用WSDL這種用XML開(kāi)發(fā)出來(lái)的語(yǔ)言向用戶描述Web Services提供的服務(wù),然后通過(guò)建立一個(gè)跨產(chǎn)業(yè)、跨平臺(tái)的開(kāi)放性架構(gòu)——UDDI,讓W(xué)eb Services的供應(yīng)商在上面發(fā)布自己的服務(wù)。
三、系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
設(shè)計(jì)過(guò)程中充分考慮到系統(tǒng)的魯棒性和可擴(kuò)展性,采用基于Web Services架構(gòu)的N層實(shí)現(xiàn)模式:數(shù)據(jù)庫(kù)服務(wù)層、數(shù)據(jù)存取層、中間層、Web服務(wù)層和客戶表示層。通過(guò)采用N層架構(gòu)模式,本系統(tǒng)可以滿足:基于局域網(wǎng)的企業(yè)內(nèi)部商業(yè)流程實(shí)現(xiàn);通過(guò)無(wú)線傳輸網(wǎng)絡(luò),滿足車載系統(tǒng)調(diào)用Web服務(wù)層與數(shù)據(jù)庫(kù)服務(wù)器進(jìn)行交互;滿足大客戶的B2B企業(yè)應(yīng)用集成;滿足EDI中心的數(shù)據(jù)交換和數(shù)據(jù)查詢需求。
1.數(shù)據(jù)類的實(shí)現(xiàn)
數(shù)據(jù)類對(duì)應(yīng)本系統(tǒng)的中間層,它涵蓋兩方面的內(nèi)容:實(shí)體類和控制類。實(shí)體類從商業(yè)邏輯上對(duì)應(yīng)數(shù)據(jù)庫(kù)中的數(shù)據(jù)表字段,通過(guò)get/set屬性來(lái)控制數(shù)據(jù)值??刂祁悘膬?nèi)存數(shù)據(jù)庫(kù)的角度出發(fā),實(shí)現(xiàn)數(shù)據(jù)庫(kù)的客戶端操作,完成數(shù)據(jù)的序列化。所有的SOAP消息最終都要反序列化為C#對(duì)象來(lái)進(jìn)行進(jìn)一步的處理;而要包含SOAP消息的C#類也都也都要由合適的序列化機(jī)制來(lái)序列化為一段XML文檔。
2.數(shù)據(jù)操作層
數(shù)據(jù)操作層是為了把數(shù)據(jù)庫(kù)和應(yīng)用系統(tǒng)的細(xì)節(jié)隔離開(kāi),同時(shí)提供訪問(wèn)權(quán)限供Web Services調(diào)用。數(shù)據(jù)操作層可以使用適配器模式來(lái)實(shí)現(xiàn),主要提供對(duì)數(shù)據(jù)庫(kù)的讀寫操作。在該系統(tǒng)中,所有的SQL語(yǔ)句、參數(shù)類型定義和連接數(shù)據(jù)庫(kù)字符串全部包括在XML文檔中,COM+提供讀取XML文檔片斷(segmant),依據(jù)正確的數(shù)據(jù)操作表,返回正確的SQL語(yǔ)句或者參數(shù)定義。
3.服務(wù)實(shí)現(xiàn)層
在該系統(tǒng)中,所有客戶端的請(qǐng)求信息都是字符串?dāng)?shù)據(jù):?jiǎn)我坏淖址蛯哟位腦ML數(shù)據(jù),同時(shí),服務(wù)響應(yīng)也全部返回XML數(shù)據(jù)。數(shù)據(jù)操作層返回?cái)?shù)據(jù)對(duì)象NewDataSet,服務(wù)層將NewDataSet對(duì)象序列化成XML數(shù)據(jù)返回客戶端。
4.客戶訪問(wèn)層
由于Web Services的平臺(tái)無(wú)關(guān)性,客戶端可以依據(jù)平臺(tái)特征,使用任何自己熟悉的語(yǔ)言根據(jù)服務(wù)描述編寫自己的客戶訪問(wèn)程序與服務(wù)進(jìn)行交互。從服務(wù)實(shí)現(xiàn)層的實(shí)現(xiàn)可以看出,服務(wù)層只是實(shí)現(xiàn)業(yè)務(wù)邏輯。在客戶程序代碼中則需要調(diào)用SOAP消息和處理返回的SOAP消息。對(duì)于SOAP對(duì)象的處理集中放在中間數(shù)據(jù)類的實(shí)現(xiàn)中,這樣將業(yè)務(wù)邏輯和顯示完全分開(kāi),避免在開(kāi)發(fā)過(guò)程中客戶端程序過(guò)于復(fù)雜。
5.錯(cuò)誤處理
一個(gè)良好的錯(cuò)誤處理機(jī)制是應(yīng)用系統(tǒng)中不可缺少的。正確合理的錯(cuò)誤處理往往能夠快速的發(fā)現(xiàn)錯(cuò)誤源頭,及時(shí)解決問(wèn)題。當(dāng)服務(wù)器上的SOAP解串行器注意到SOAP消息無(wú)效時(shí),會(huì)發(fā)出異常。在客戶端可以有兩種對(duì)SOAP錯(cuò)誤進(jìn)行程序檢查:SOAP錯(cuò)誤返回HTTP錯(cuò)誤代碼500;SOAP錯(cuò)誤在SOAP返回封裝中包含XML元素。
四、結(jié)論
現(xiàn)代企業(yè)的發(fā)展逐漸一體化、同盟化,有效集成企業(yè)的核心競(jìng)爭(zhēng)力,建立高效的應(yīng)用集成信息平臺(tái),提供擴(kuò)展業(yè)務(wù)的有效模型是Web Services技術(shù)的核心所在。Web Services在完全不同的平臺(tái)之間具有良好的互操作性,通過(guò)遍布全世界的Internet可以實(shí)現(xiàn)不同企業(yè)的核心業(yè)務(wù)的有效集成。
參考文獻(xiàn):
[1]肖國(guó)古魯五一:基于XML Web Service的分布式應(yīng)用系統(tǒng)的開(kāi)發(fā)[J].電腦知識(shí)與技術(shù), 2004,8: 62-64
[2]彭江平:Microsoft.Net的Web Services及其實(shí)現(xiàn),應(yīng)用技術(shù), 2002,4
[3]李灝晨:基于.NET平臺(tái)的分布式應(yīng)用系統(tǒng)研究及應(yīng)用[D].武漢:武漢理工大學(xué), 2004