服務導向架構(Service Oriented Architecture,SOA)觀念在提出多年後,終於開始發酵。而微軟世界裡,因WCF(Windows Communication Foundation)的出現,也使得SOA實作的基礎簡化了。

SOA強調以下重點:

● 一切技術遵循公開標準

● 服務定義的邊界明確

● 服務自主,而不受制於其他服務

● 服務間只共享合約和原則

上述這些概念既抽象,實際設計與撰寫也很繁瑣,且維護不易。作法上WCF盡量將我們所需要開發的商業邏輯與SOA的基本要求分開,如此一來,開發人員可以專注在使用者的需求──若要滿足SOA的特性,只需要照著WCF的規範提供定義後,交由平臺負責即可。>>>WCF簡介

換句話說,落實SOA的概念,需要容易開發自訂服務的整合環境與執行平臺。在強調組裝、重用與整合下,程式如何遵循標準、共享資料合約和服務合約,而非綁死在基本資料型態和類別?在開放架構下,跨異質型平臺的溝通雖然變成基本條件,但該如何彈性、安全、有效率地溝通?當上述問題變成基本需求後,必須打穩根基才會枝繁葉茂。微軟因此推出WCF,為架構師和開發人員清除底層的屏障。

完整介紹WCF

在此,筆者想介紹一本關於WCF的好書《Microsoft Windows Communication Foundation Step by Step》。此書有著Step by Step系列書籍的特徵,擁有許多實作範例,但不同的是,本書所援引的技術既廣且深。

本書所涵蓋的面向相當廣泛,程式設計新手閱讀起來可能會有點辛苦。如果你是使用Visual Studio 2005的C#程式老手,且有網路結構、交易管理、安全等基本知識,則WCF將是一個工作利器。若你是系統分析設計人員,或是架構工程師,也可以透過本書了解分散式系統應注意的事項。

本書前三章介紹WCF基本原理,針對不同需求面向,深入解釋並輔助實作。第一章以簡單範例解說,如何以架在WCF上的使用者端應用程式呼叫服務;第二章則介紹透過.NET Framework 3.0的 System.ServiceModel.ServiceHost類別來承載我們所撰寫的服務,但由於它只是一個類別,本身不會執行,因此作者進一步示範如何撰寫WPF以及Windows Service兩種應用程式類型,以便載入先前撰寫的服務。

系統整合時,通常會潛藏很多不確定因素,因為每個系統開發團隊對需求與規格的認知不同,技術能力良莠不齊,自然會有很多的例外錯誤。但這些錯誤也需要在異質平臺間傳遞,因此,WCF需要能將.NET Framework 的Exception改以SOAP Fault呈現。這就是第三章所要強調的主題,並示範如何在定義DataContract後,再傳回使用者自訂的錯誤結構。

第四章討論當使用者端與服務端透過網路溝通時,如何保護過程中的安全。你可以了解到,其實僅需透過設定,就能用WCF已經提供的完備功能來完成驗證、簽章、加解密等機制。第五章則討論網際網路的溝通安全。

第六章主要介紹服務和資料合約的版本控管,以及建議更新版本的做法。第七章說明如何在伺服器端維護使用者端的狀態,這與服務執行個體的生命周期密切相關。

第八章討論分散式交易,透過簡單的範例程式碼說明如何在前端程式控制交易,但對於異質型平臺的分散式交易著墨不多。第九章也提到如何維持通信品質,同時藉由保證訊息順序的唯一標識/編號和失效等機制,可以防止駭客的重播攻擊(Replay Attack)。

第十章討論如何藉由程式設定與管理WCF所提供的功能。第十一章討論單向(OneWay)與非同步兩種溝通方式;這與使用者端是否需要伺服器端的回應,以及兩者間是否需要同步處理單一需求有關,設計的好壞,將影響整體系統的效能和前端程式的流暢度。

第十二章則探討為保證資源有效使用,所提供的流量限制,以及傳遞如多媒體資料等大型二進位資料時,使用的MTOM規格。第十三章介紹訊息的繞送,並據此示範經由繞送使用者端的需求,達成負載平衡(Load Balance)。

第十四章說明從伺服器端反向呼叫使用者端。這需先在伺服器端定義回呼合約(Callback Contract),並由使用者端實作;當伺服器端發生使用者端有興趣的事件時,可以反過來呼叫使用者端的程式。

第十五章介紹.NET Framework 3.0引進的Windows CardSpace技術,以驗證使用者的身分。經由實作,讓筆者從懵懂進而理解其架構,以及如何整合憑證(Certificate)以保證雙方的安全。

本書最後一章解釋如何將以往用ASP.NET開發的Web Service,或是.NET Enterprise 開發的COM+移轉到WCF,藉以保障先前的投資。

2008年將有新氣象

書中各章節內容獨立,循著前3章走完範例,了解WCF的基本架構後,就可以選取有興趣的主題閱讀。

由於Visual Studio 2008還未正式發行,使用Visual Studio 2005執行範例前,提醒你參考Introduction的章節介紹,安裝必要的程式物件,否則範例將無法使用。

此外,本書上市之時,書內範例所引用的Microsoft Enterprise Library版本是 2.0 – January 2006,而現在微軟網頁提供下載的最新版本已經變成Enterprise Library 3.1 – May 2007,若你下載的是最新版本,範例程式碼所呼叫的物件,可能會發生版本上的問題。一般來說,你只要將服務或是服務的宿主程式所使用的app.config檔案內容,稍做修改即可:

你可以參考該物件的版本特徵來修改上述粗體字的部分,但是最簡單的方式,應該是將這段敘述直接刪除即可。

我認為,實作資訊系統的技術依然建立於.NET之上,把物件導向/元件導向的設計方式融入服務導向的精神後,WCF將可簡化與商業邏輯無關的部分。

待2008年3月Visual Studio 2008(Orcas)+ Windows 2008(Longhorn)+ IIS 7上市,新一代的應用伺服器可以整合 WCF,提供一致的開發與設定方式,我們可預期分散式系統將有一番新氣象。

集微軟分散式應用之大成

WCF是建立在.NET上的應用程式溝通框架,集微軟分散式應用經驗之大成。整合.NET平臺和分散式運算相關的技術,如.NET Remoting、Web Service/WSE/WS-*、分散式交易(.NET Enterprise)和訊息處理(MSMQ),以及以往的COM+/DCOM等技術。提供開發者建立跨平臺、安全、可信賴、交易管理的解決方案,且能與既有系統相容。

規範程式溝通所需的合約

熟悉WCF是簡化SOA開發的第一步。WCF主要規範開發人員在處理商業邏輯前,先行制定程式間溝通所需的例如資料合約、服務合約、訊息合約等。接著,透過設定behavior,你可以調整WCF 執行階段如何搭配服務執行,例如是否提供前端WSDL說明、是否傳回完整錯誤訊息等。

就程式或系統間的溝通而言,WCF可以跨程序(Process)、機器、區域網路,乃至於網際網路。以WCF為基礎的服務,它的宿主(Host)程式可以是IIS、ASP.NET、EXE、Windows Service、COM+等。

WCF支援的網路協定,目前包括SOAP、HTTP、Named Pipe、TCP等,提供的安全機制,則包括各種加解密演算法、SAML、Kerberos、X509、帳號/密碼等多種標準與模式。你也可以自訂協定與安全機制,以延伸其功能。

事實上,WCF將所有與程式溝通相關的技術都包含在內,並實作OASIS(Organization for the Advancement of Structured Information Standards)組織所定義一堆的WS-*標準規格。

優點

概括來說,筆者認為WCF具有以下好處:

●統一:WCF整合微軟歷來的分散式開發技術。

●相容:WCF能充分與舊有系統相容,安裝WCF並不會影響企業內原有的技術,且彼此可以溝通。

●整合:WCF支援多種通信協定以保證系統間的互通性,期待經由標準的WS-*、Web Service、SOAP等規格,可進行跨異質型平臺整合。

●安全:支援WS- 所規範的多種安全機制,如WS-Security、WS-Trust 和WS-SecureConversation等標準,以用於使用者認證、資料完整性驗證、資料隱私等多種安全議題。

●可信賴的訊息溝通:一般對可信賴的訊息溝通的要求,可分為兩部分,一是安全,另一是兩端收發訊息的品質。安全的部分如前面所述,WCF支援WS-ReliableMessaging、WS-Addressing標準,提供可信賴的端對端通信,同時還支援MTOM規格(Message Transmission Optimization Mechanism,訊息傳輸最佳化機制),讓大型二進位資料可以有效地進行傳遞。

●整合了佇列(Queue):上述訊息品質指的是兩端應用程式同時在線上進行端對端溝通。而WCF也支援透過佇列(Queue)傳遞訊息,讓兩端不必同時存在同一時空中。

●交易可管理:建立在WS-Coordination和WS-AtomicTransaction標準之上,以整合異質型平臺的交易,提供分散式交易所需的兩階段完成交易協定(Two-Phase Commit Transactions)。

●簡化開發:讓以往需徒手撰寫的功能改以設定啟動。(根據微軟提供的例子,能將原本需撰寫56,296行的程式碼簡化成3行程式碼、4行設定)

 

延伸閱讀:

WCF 相關資源

●微軟對WCF的主網頁

●MSDN對WCF的主網頁

● 制定WS-*標準的OASIS組織首頁

● 另一本不錯的書:《Inside Windows Communication Foundation》,Microsoft Press出版,Justin Smith/著。這本書只針對WCF本身作介紹,並無其他延伸討論。

 

WCF簡介

WCF內建於.NET Framework 3.0。Windows Vista及Windows 2008作業系統皆預含該架構,現行的Windows XP和Windows Server 2003作業系統也可以單獨安裝.NET Framework 3.0 Runtime。

至於目前通行的微軟開發平臺Visual Studio 2005,它並沒有包含WCF,我們可自微軟網站下載Visual Studio 2005 extensions for .NET Framework 3.0,以方便開發架設在WCF上的系統。

 

Microsoft Windows Communication Foundation Step by Step

John Sharp/著

Microsoft Press出版

售價:44.99美元

Amazon五顆星

 

《作者簡介》

胡百敬

現任職恆逸資訊教育訓練處資深講師,Ascentn、睿智資訊與臺灣微軟技術顧問。著有《SQL Server 2005 T-SQL 資料庫設計》等書,並為專欄作家。

熱門新聞

Advertisement