Windows Communication Foundation入門(Part One) )

來源:互聯網
上載者:User

前言:WCF是微軟基於SOA(Service Oriented Architecture)推出的.Net平台下的架構產品,它代表了軟體架構設計與開發的一種發展方向,在微軟的戰略計劃中也佔有非常重要的地位。瞭解和掌握WCF,對於程式員特別是基於微軟產品開發的程式員而言,是非常有必要的。對於WCF,筆者也是初窺門徑,抱著學習的態度作這樣的一個介紹。文中的內容主要參考了微軟官方的文檔、資料,以及眾多介紹WCF的技術資料。這些資料主要都是英文,不便於國內程式員學習WCF。雖然本人才疏學淺,卻願意作這樣的介紹者。由於自己僅是一個初學者,英文的功底也不夠深厚,所以文中難免會有疏漏之處。同時,我也希望在文中盡量表達出自己的一些心得與見解,這就不免增加了出現錯誤的可能性。此外,由於WCF至今仍未有正式的版本,文中相關的技術描述以及代碼會根據版本的不同而發生變化,所以我也只能盡量對此給與一定的說明。本文會是多篇文章拼湊在一起的系列,說是系列,但並沒有嚴格的漸進關係,只是整體上希望能有一個相對全面的WCF入門介紹。此外,筆者也希望能通過此文拋磚引玉,這樣也能讓我的WCF學習之旅更輕鬆一點。

    一、什麼是WCF?
    根據微軟官方的解釋,WCF(之前的版本名為“Indigo”)是使用Managed 程式碼建立和運行面向服務(Service Oriented)應用程式的統一架構。它使得開發人員能夠建立一個跨平台的安全、可信賴、事務性的解決方案,且能與已有系統相容協作。WCF是微軟分布式應用程式開發的集大成者,它整合了.Net平台下所有的和分布式系統有關的技術,例如.Net Remoting、ASMX、WSE和MSMQ。以通訊(Communiation)範圍而論,它可以跨進程、跨機器、跨子網、企業網乃至於Internet;以宿主程式而論,可以以ASP.NET,EXE,WPF,Windows Forms,NT Service,COM+作為宿主(Host)。WCF可以支援的協議包括TCP,HTTP,跨進程以及自訂,安全模式則包括SAML,Kerberos,X509,使用者/密碼,自訂等多種標準與模式。也就是說,在WCF架構下,開發基於SOA的分布式系統變得容易了,微軟將所有與此相關的技術要素都包含在內,掌握了WCF,就相當於掌握了叩開SOA大門的鑰匙。
    WCF是建立在.Net Framework 2.0基礎之上的,正式的版本應該會作為Windows Vista的核心部分而Release。然而,這並不代表WCF只能運行在Windows Vista下。只要安裝了WinFX Runtime Components,在Windows XP和Windows 2003作業系統下,仍然可以使用。Visual Studio 2005中並沒有包含WCF,但是當安裝好了WinFX Runtime Components後,我們就可以在Visual Studio 2005環境下開發和建立WCF的程式了。
    目前最新的WCF版本是February 2006 CTP,下載頁面是:http://www.microsoft.com/downloads/details.aspx?FamilyId=F51C4D96-9AEA-474F-86D3-172BFA3B828B&displaylang=en。使用WCF需要用到一些相關的工具,如SvcUtil.exe,所以還需要下載WinFX Runtime Components的SDK,其下載頁面是:http://www.microsoft.com/downloads/details.aspx?FamilyId=9BE1FC7F-0542-47F1-88DD-61E3EF88C402&displaylang=en。安裝SDK可以選擇網路安裝或本地安裝。如果是本地安裝,檔案大小為1.1G左右,是ISO檔案。安裝了SDK後,在program files目錄下,有microsoft SDK目錄。
WCF是微軟重點介紹的產品,因此也推出了專門的官方網站(http://windowscommunication.net),該網站有最新的WCF新聞發布,以及介紹WCF的技術文檔和範例代碼。

    二、WCF的優勢
    在David Chappell所撰的《Introducing Windows Communication Foundation》一文中,用了一個活鮮鮮的例子,來說明WCF的優勢所在。假定我們要為一家汽車租賃公司開發一個新的應用程式,用於租車預約服務。該租車預約服務會被多種應用程式訪問,包括話務中心(Call Center),基於J2EE的租車預約服務以及夥伴的應用程式(Partner Application),:
 


    話務中心運行在Windows平台下,是在.Net Framework下開發的應用程式,使用者為公司員工。由於該汽車租賃公司兼并了另外一家租賃公司,該公司原有的汽車預約服務應用程式是J2EE應用程式,運行在非Windows作業系統下。話務中心和已有的汽車預約應用程式都運行在Intranet環境下。夥伴的應用程式可能會運行在各種平台下,這些夥伴包括旅行社、航空公司等等,他們會通過Internet來訪問汽車預約服務,實現對汽車的租用。
    這樣一個案例是一個典型的分布式應用系統。如果沒有WCF,利用.Net現有的技術應該如何開發呢?
    首先考慮話務中心,它和我們要開發的汽車預約服務一樣,都是基於.Net Framework的應用程式。話務中心對於系統的效能要求較高,在這樣的前提下,.Net Remoting是最佳的實現技術。它能夠高效能的實現.Net與.Net之間的通訊。
    要實現與已有的J2EE汽車預約應用程式之間的通訊,只有基於SOAP的Web Service可以實現此種目的,它保證了跨平台的通訊;而夥伴由於是通過Internet來訪問,利用ASP.Net Web Service,即ASMX,也是較為合理的選擇,它保證了跨網路的通訊。由於涉及到網路之間的通訊,我們還要充分考慮通訊的安全性,利用WSE(Web Service Enhancements)可以為ASMX提供安全的保證。
    一個好的系統除了要保證訪問和管理的安全,高效能,同時還要保證系統的可信賴性。因此,交易處理是公司專屬應用程式必須考慮的因素,對於汽車預約服務而言,同樣如此。在.Net中,Enterprise Service(COM+)提供了對事務的支援,其中還包括分散式交易(Distributed Transactions)。不過對於Enterprise Service而言,它僅支援有限的幾種通訊協定。
    如果還要考慮到非同步呼叫、離線串連、斷點串連等功能,我們還需要應用MSMQ(Microsoft Message Queuing),利用訊息佇列支援應用程式之間的訊息傳遞。
    如此看來,要建立一個好的汽車租賃預約服務系統,需要用到的.Net分布式技術,包括.Net Remoting、Web Service,COM+等五種技術,這既不利於開發人員的開發,也加大了程式的維護難度和開發成本。正是因應於這樣的缺陷,WCF才會在.Net 2.0中作為全新的分布式開發技術被微軟強勢推出,它整合了上述所屬的分布式技術,成為了理想的分布式開發的解決之道。展示了WCF與之前的相關技術的比較:
 

    從功能的角度來看,WCF完全可以看作是ASMX,.Net Remoting,Enterprise Service,WSE,MSMQ等技術的並集。(註:這種說法僅僅是從功能的角度。事實上WCF遠非簡單的並集這樣簡單,它是真正面向服務的產品,它已經改變了通常的開發模式。)因此,對於上述汽車預約服務系統的例子,利用WCF,就可以解決包括安全、可信賴、互操作、跨平台通訊等等需求。開發人員再不用去分別瞭解.Net Remoting,ASMX等各種技術了。
    概括地說,WCF具有如下的優勢:
    1、統一性
    前面已經敘述,WCF是對於ASMX,.Net Remoting,Enterprise Service,WSE,MSMQ等技術的整合。由於WCF完全是由Managed 程式碼編寫,因此開發WCF的應用程式與開發其它的.Net應用程式沒有太大的區別,我們仍然可以像建立物件導向的應用程式那樣,利用WCF來建立面向服務的應用程式。
    2、互通性
    由於WCF最基本的通訊機制是SOAP,這就保證了系統之間的互通性,即使是運行不同的上下文中。這種通訊可以是基於.Net到.Net間的通訊,如所示:
 

    可以跨進程、跨機器甚至於跨平台的通訊,只要支援標準的Web Service,例如J2EE應用伺服器(如WebSphere,WebLogic)。應用程式可以運行在Windows作業系統下,也可以運行在其他的作業系統,如Sun Solaris,HP Unix,Linux等等。如所示:
 

    3、安全與可信賴
WS-Security,WS-Trust和WS-SecureConversation均被添加到SOAP訊息中,以用於使用者認證,資料完整性驗證,資料隱私等多種安全因素。
在SOAP的header中增加了WS-ReliableMessaging允許可信賴的端對端通訊。而建立在WS-Coordination和WS-AtomicTransaction之上的基於SOAP格式交換的資訊,則支援兩階段的事務提交(two-phase commit transactions)。
    上述的多種WS-Policy在WCF中都給與了支援。對於Messaging而言,SOAP是Web Service的基本協議,它包含了訊息頭(header)和訊息體(body)。在訊息頭中,定義了WS-Addressing用於定位SOAP訊息的地址資訊,同時還包含了MTOM(訊息傳輸最佳化機制,Message Transmission Optimization Mechanism)。:
 

    4、相容性
    WCF充分的考慮到了與舊有系統的相容性。安裝WCF並不會影響原有的技術如ASMX和.Net Remoting。即使對於WCF和ASMX而言,雖然兩者都使用了SOAP,但基於WCF開發的應用程式,仍然可以直接與ASMX進行互動。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.