摘 要:近幾年來各企業(yè)希望在信息化建設(shè)及其部門業(yè)務(wù)整合上能廣泛使用SOA。因此為了實現(xiàn)SOA面向服務(wù)的目的,采用融合了.NET Web Service等相關(guān)技術(shù)后的WCF方法,做了用.NET的分布式開發(fā)技術(shù)WCF實現(xiàn)SOA面向服務(wù)的過程實驗,獲得了用WCF實現(xiàn)SOA面向服務(wù)程序時更加容易管理、更能實現(xiàn)系統(tǒng)整合優(yōu)勢的結(jié)果,得到用WCF實現(xiàn)SOA面向服務(wù),可以對事物、安全、編碼等統(tǒng)一管理和協(xié)調(diào)各服務(wù)器之間系統(tǒng)操作的結(jié)論。
關(guān)鍵詞:WCF;SOA;.Net框架;面向服務(wù)
中圖分類號:TP311.52
1 WCF及相關(guān)技術(shù)
1.1 WCF
WCF即Windows Communication Foundation的簡寫,被譯為Windows通信基礎(chǔ),它是一組數(shù)據(jù)通信的應(yīng)用程序接口。通常在程序開發(fā)中,往往是在Windows平臺上開發(fā)和部署服務(wù)的軟件開發(fā)包SDK(Software Development Kit)。WCF提供了服務(wù)運行時的環(huán)境(Runtime Environment),從而使程序開發(fā)時,程序員既可以將CLR類型公開為服務(wù),又可以以CLR類型的方式使用服務(wù)。理論上來說,創(chuàng)建服務(wù)并一定需要WCF,但是由于面向服務(wù)架構(gòu)(Service-Oriented Architecture)在軟件工業(yè)中的廣泛應(yīng)用,微軟基于這些通信方法并重新設(shè)計了一個統(tǒng)一的程序開發(fā)模型WCF[1]。
WCF既是對包括服務(wù)交互、類型轉(zhuǎn)換、封送(Marshaling)以及各種協(xié)議的管理又是微軟對一系列產(chǎn)業(yè)標(biāo)準(zhǔn)定義的實現(xiàn)。允許程序與本機或互聯(lián)網(wǎng)上的計算機中的其他程序通過消息實現(xiàn)通訊,其整合了.NET平臺的分布式系統(tǒng)技術(shù),為程序開發(fā)者提供了大多數(shù)應(yīng)用程序需要的基礎(chǔ)功能模塊。
1.2 WCF技術(shù)
Windows通信基礎(chǔ)(WCF)是.NET平臺實現(xiàn)SOA的利器。由于WCF是面向服務(wù)的框架,因此服務(wù)便是WCF的核心,也就是說對于WCF的程序設(shè)計需要更多的考慮其服務(wù)端構(gòu)成框架服務(wù)類(Service Class)、宿主(Host)和端點(Endpoint),如圖1WCF服務(wù)端構(gòu)成框架所示。
服務(wù)類:一個標(biāo)記了WCF屬性的特有類,用來具體實現(xiàn)服務(wù)的業(yè)務(wù)邏輯。其包含多個方法。理論上其除了標(biāo)記了一些WCF特有的屬性外,與一般的面向組件類沒有區(qū)分。
宿主:是應(yīng)用程序進(jìn)程,也是承載WCF服務(wù)運行的環(huán)境。如可用環(huán)境包括IIs方式、WAS方式、系統(tǒng)服務(wù)方式等。
端點:可以是一個,也可以是一組,是WCF實現(xiàn)通信的核心要素。其組成元素是地址(Address)、契約(Contract)和綁定(Binding)。在WCF中類Service Endpoint就代表一個Endpoint來交換消息。
地址:包含服務(wù)位置與傳輸協(xié)議,或者是用于服務(wù)通信的傳輸樣式元素。對于WCF的每一個服務(wù)都具有唯一的地址。地址通常采用格式為:[傳輸協(xié)議]://[機器名或域名][:可選端口]/[可選的URI]。其中URI即統(tǒng)一資源標(biāo)識,它可以是任意的唯一標(biāo)識的字符串,例如服務(wù)名稱或GUID。
綁定:WCF引入綁定(Binding)技術(shù)將服務(wù)之前的多種通信方式組合在一起,來保持一致性。例如一個綁定可能封裝了傳輸協(xié)議、通信模式、消息編碼、可靠性、安全性、事務(wù)傳播以等相關(guān)選項的集合。當(dāng)然也可以自己編寫定制綁定。
契約:是用來描述服務(wù)功能的標(biāo)準(zhǔn)方式,定義雙方溝通的協(xié)議,其所有的服務(wù)都會公開為一個或多個契約并以接口的方式來體現(xiàn)。WCF定義了服務(wù)傳輸數(shù)據(jù)類型的數(shù)據(jù)契約;定義了Client Endpoint使用服務(wù)操作的服務(wù)合約;定義了服務(wù)引發(fā)的錯誤信息的錯誤處理契約;定義了允許操控服務(wù)消息內(nèi)容規(guī)范的消息合約。
2 SOA簡述及相關(guān)技術(shù)
SOA是一種遵照開放的互操作協(xié)議的軟件工程方法,通過組合可重用的軟件資產(chǎn)實現(xiàn)軟件系統(tǒng)[4]。在理論層面上,SOA與面向?qū)ο蟆⒚嫦蚪M件一樣都是軟件組建及開發(fā)的方式,是一種思想、一種體系,而不是某種具體的軟件產(chǎn)品。在技術(shù)層面上,SOA是一種“抽象的、松耦合的粗粒度軟件架構(gòu)”。在業(yè)務(wù)層面上,SOA的核心概念是“重用”和“互操作”。
SOA是一個組件模型,是一種進(jìn)行系統(tǒng)開發(fā)的新的體系架構(gòu),在基于SOA架構(gòu)的系統(tǒng)中,它將應(yīng)用程序的不同功能單元(稱為服務(wù))通過這些服務(wù)之間定義良好的接口和合約聯(lián)系起來,接口是采用中立的方式進(jìn)行定義的,具有服務(wù)之間的松耦合性。因此,SOA和其它企業(yè)級架構(gòu)的不同取決于SOA提供的業(yè)務(wù)靈活性。對企業(yè)級架構(gòu)設(shè)計師來說,創(chuàng)建一個業(yè)務(wù)靈活的架構(gòu)意味著創(chuàng)建一個可以滿足當(dāng)前還未知的業(yè)務(wù)需求的IT架構(gòu)。使用WCF實現(xiàn)SOA,正好可以利用WCF的靈活性,把業(yè)務(wù)層封裝,發(fā)布為Web服務(wù)。這樣可以降低系統(tǒng)的耦合度,加大對未知業(yè)務(wù)的擴展性。
3 用WCF實現(xiàn)SOA面向服務(wù)過程
Web服務(wù)本來就是沒有區(qū)分代碼的,因此用WCF實現(xiàn)SOA面向服務(wù)程序時多開發(fā)了一個Service Interface,目的是為了讓系統(tǒng)更加容易管理。在程序開發(fā)過程中,Service是不斷更改的,如果是在UI層上直接調(diào)用服務(wù)層,其更改是頻密的,所以在這里開發(fā)一個Service Interface層目的是為了把WSDL集成在同一個DLL程序集里面,進(jìn)行統(tǒng)一修改。最后UI層只要直接調(diào)用Service Interface,就可以對系統(tǒng)直接進(jìn)行操作。
在實現(xiàn)多功能分布式開發(fā)的時候,用WCF實現(xiàn)SOA的開發(fā)方式更能展示其優(yōu)勢。在企業(yè)級系統(tǒng)開發(fā)過程中,系統(tǒng)往往會使用B/S,C/S混合的開發(fā)模式。而在以往的開發(fā)過程,開發(fā)人員往往把B/S,C/S分開來實現(xiàn)。在使用WCF技術(shù)后,開發(fā)人員可以把功能模塊統(tǒng)一發(fā)布為WCF,然后綁定不同的端點進(jìn)行發(fā)布,將B/S和C/S方式的業(yè)務(wù)邏輯層真正地融合在一起,從而降低開發(fā)難度。
3 結(jié)束語
本文分析了使用WCF實現(xiàn)SOA面向服務(wù),可以對事務(wù)、安全、編碼等進(jìn)行統(tǒng)一管理,協(xié)調(diào)了各服務(wù)器之間的系統(tǒng)操作。概述了WCF及其相關(guān)技術(shù)、SOA及其相關(guān)技術(shù),指出了WCF既支持具有互操作性的Web服務(wù),也能實現(xiàn).NET客戶端與.NET服務(wù)端的通信。
參考文獻(xiàn):
[1]CRAIG Mcmurty,MARC Mercuri,MATT Winkler.Windows communication foundation (WCF) unleashed[M].Indianapolis,Ind:Sams,2007.
[2]SCOTT Klein.Professional WCF Programming:.NET Development with the Windows Communication Foundation[M].Birmingham,UK:Wrox Press,2007.
[3]JUVAL Lowy.張逸,徐寧,譯.WCF服務(wù)編程[M].北京:機械工業(yè)出版社,2008.
作者簡介:趙新華(1980.07-),女,甘肅蘭州人,電子與信息工程系,碩士研究生,講師,研究方向:計算機應(yīng)用;張克柱(1982.03-),男,甘肅蘭州人,現(xiàn)代服務(wù)系,碩士研究生,講師,研究方向:軟件工程。
作者單位:蘭州職業(yè)技術(shù)學(xué)院,蘭州 730020