書訊--Microsoft Windows Communication Foundation Step by Step

來源:互聯網
上載者:User

SOA 觀念提出後,經過多年的時間終於開始發酵。微軟世界裡因 WCF 的出現,簡化了實做的基礎。SOA 強調如下的重點:

l   一切技術遵循公開標準

l   服務定義的邊界明確

l   服務自主而不受制於其他服務

l   服務間只共用合約和原則

這些概念既抽象,實際設計與撰寫也很繁瑣,且維護不易,WCF 則盡量將我們所需要開發的商業邏輯與 SOA 的基本要求分開。系統開發人員依然專註在使用者的需求,若要滿足 SOA 的特性,僅需要照著 WCF 的規範提供定義後,就交由平台去負責。

換句話說,要落實 SOA 的概念,需要容易開發自定服務的整合環境與執行平台。在強調組裝、重用與整合下,程式如何遵循標準,共用資料合約和服務合約,而非綁死在基本資料型態和類別。在開放架構下,跨異質型平台的溝通變成是基本,如何彈性、安全、有效率地溝通。當上述問題變成是基本需求,則根穩固才會枝繁葉茂。微軟就此推出了 WCF,為架構工程師和程式設計師清除了底層的障壁。

什麼是 WCF

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

WCF 內建於.Net Framework 3.0。Windows Vista 及 Windows 2008 作業系統會預含該架構。而 Windows XP 和 Windows 2003 作業系統也可以單獨安裝 .NET Framework 3,0 Runtime。現今通行的 Visual Studio 2005 中並沒有包含WCF,但可自微軟的網站下載 Visual Studio 2005 extensions for .NET Framework 3.0,以方便開發架在 WCF 上的系統。

WCF 總體架構如圖 1 所示:

圖 1:WCF 的總體架構

WCF 規範你在寫商業邏輯前,要先制定程式間溝通時所需的合約,如資料合約、服務合約、訊息合約等。接著,透過設定 behavior 你可以調整 WCF runtime 如何搭配你的服務執行,例如是否要提供 WSDL 說明給前端,是否傳回完整錯誤訊息…等。

就程式或系統間的溝通而言,WCF 可以跨程式(Process)、機器、區域網路絡、乃至於網際網路。以 WCF 為基礎的服務,其宿主(Host)程式可以是 IIS、ASP.NET,EXE,Windows Service,COM+…等。WCF 支援的網路通訊協定包括 SOAP、HTTP、Named Pipe、TCP…等,而它提供的安全機制包括各種加解密演算法、SAML、Kerberos、X509、帳號/密碼等多種標準與模式,你也可以自訂協議與安全機制,以延伸其功能。

另外,圖 1 中 Messaging 區塊內的 Channel 代表傳輸時,各種功能的堆棧。雖然是畫在一起,但邏輯上有層次之分,例如 Transaction Flow 最高,Reliable 次之,Security 再次之,而 HTTP、TCP、Named Pipe 同屬底層的傳輸協議。

總而言之,WCF將所有與程式溝通相關的技術都包含在內,並替你實做了 OASIS 組織所定義一堆的 WS-* 標準規格[1]。而熟悉 WCF 是簡化 SOA 開發的第一步。

WCF 的優點

概括地說,WCF具有如下的好處:

l   統一:如前所述,WCF 整合微軟曆來分布式開發的技術。

l   相容:充分與舊有系統相容。安裝WCF並不會影響企業內原有的技術,且仍可與其溝通。

l   整合:WCF支援多種通訊協定以保證系統間的互通性,且期待經由標準的 WS-*/Web Service/SOAP 等規格,可跨異質型平台整合。

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

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

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

l   交易管理:建立在 WS-Coordination 和 WS-AtomicTransaction 標準之上,以整合異質型平台的交易,提供分布式證券交易所需的兩階段完成交易協議(two-phase commit transactions)。

l   簡化開發:讓以往需徒手撰寫的功能改以設定啟動(依據微軟舉的例子,將原本需撰寫 56296 行的程式碼簡化成 3 行程式碼,4 行設定)。

光是表列這麼多 WCF 的好處當然不夠J,上圖 1 的架構也非三言兩語可以道盡。在此介紹一本關於 WCF 的好書「Microsoft Windows Communication Foundation Step by Step」,作者是 John Sharp,Microsoft Press 出版。它有著 Step by Step 系列書籍的特徵,就是藉由許多實做範例導引你。但不同的是,本書所援引的技術廣且深[3]。

書籍內容

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

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

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

第六章主要在介紹服務和資料合約的版本控管,以及建議更新版本的做法。第七章介紹如何在伺服端維護使用者端的狀態,但這與服務執行個體的生命週期密切相關。第八章討論分布式交易,透過簡單的範常式序代碼說明如何在前端程式控制交易,但可惜對於異質型平台的分布式交易著墨不多。第九章介紹如何維持通訊品質,同時藉由保證訊息順序的唯一標識/編號和失效等機制,可以防止駭客的回放攻擊(replay attack)。

第十章討論如何藉由程式來設定與管理 WCF 所提供的功能,也解釋了圖 1 中 Service Runtime 和 Messaging 兩個區塊。第十一章討論單向(OneWay)與非同步兩種溝通方式,這與使用者端是否需要伺服器端的響應,以及兩者間是否需要同步處理單一需求有關,設計的好壞將影響整體系統的效能和前端程式的流暢與否。第十二章探討為保證資源有效使用而提供的流量限制,以及傳遞如多媒體資料等大型位元據時,使用的 MTOM 規格。第十三章介紹訊息的繞送,並據此示範經由繞送使用者端的需求來達成Server Load Balancer(load balance)。第十四章說明從伺服器端反向呼叫使用者端,這需先在伺服器端定義回呼合約(Callback contract),並由使用者端實作。當伺服器端發生了使用者端有興趣的事件時,可以反過來呼叫使用者端的程式。

第十五章介紹了 .NET Framework 3.0 引進的 Windows CardSpace 技術,以驗證使用者的身分。經由實做,讓筆者從懵懂進而理解其架構,以及如何整合憑證(Certificate)來保證雙方的安全。本書的最後一章解釋如何將以往用 ASP.NET 開發的 Web Service<

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.