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