一.特性
1.與 Microsoft 分散式運算技術的統一性
.NET Framework 的最初版本中包含多種不同的技術,用於建立分布式應用程式。列出了每種技術與開發人員採用該技術的主要理由。例如,要構建基本的可互操作的 Web 服務,最佳選擇是 ASP.NET Web 服務,即通常所說的 ASMX。要串連兩個基於 .NET Framework 的應用程式,有時應當選擇 .NET Remoting。如果應用程式需要分散式交易和其他更進階的服務,其建立者一般會使用企業服務,即 .NET Framework 推出的 COM+(COM plus) 的繼任者。要瞭解最新的 Web 服務規範,如 WS-Addressing 和 WS-Security,開發人員可以構建採用 Web 服務增強(縮寫為 WSE,是 Microsoft 對這些新興規範的初始實現)的應用程式。而要建立基於訊息的排隊式應用程式,基於 Windows 的開發人員則應使用 Microsoft 訊息隊
列
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、面向服務的開發
設計WCF過程中四項原則 :
共用架構
,而不是類:與舊的分布式對象技術不同,服務僅通過精心定義的 XML 介面與其用戶端進行互動。跨越服務邊界傳遞完整的類、方法及全部之類的行為被禁止。
服務具有自主性:服務及其用戶端同意它們之間的介面,但相互獨立。它們可以採用不同的語言編寫,可以使用不同的運行時環境(如 CLR 和 JAVA 虛擬機器),可以運行在不同作業系統上,還可以存在其他方面的不同。
邊界是顯式的:分布式對象技術 [如分散式 COM (DCOM)] 的目標之一是使遠程對象儘可能看上去像本機物件一樣。雖然這種方法通過提供一種通用編程模型在某些方面簡化了開發,但也同時隱藏了本機物件與遠程對象之間不可避免的區別。服務通過使服務與其用戶端之間的互動更明顯而避免了這一問題。隱藏分布式特性並非目的。
採用基於策略的相容性:如果可能,決定在系統之間使用哪些選項應取決於基於 WS-Policy 的機制。
td
{
font-size: 12px;
}
.commentTextBox
{
font-family: Verdana;
font-size: 13px;
}
a.blue:visited, a.blue:active, a.blue:link, a.blue:hover
{
color: blue;
}
.userData
{
behavior: url(#default#userdata);
}二.體繫結構協定和說明
協定定義訊息系統的各個方面。
資料合約描述組成某一服務可建立或使用的每則訊息的每個參數。 訊息參數由 XML 結構定義語言 (XSD) 文檔定義,這使得任何理解 XML
的系統均可處理該文檔。 訊息合約使用 SOAP
協議定義特定訊息部分,當互通性要求對訊息的某些部分進行更精細的控制時,訊息合約可實現這種控制。服務合約指定服務的實際方法簽名,並以支援的編程語
言之一(例如 Visual Basic 或 Visual C#)作為介面進行分發。
策略和綁定規定與某一服務進行通訊所需的條件。 例如,綁定必須(至少)指定所使用的傳輸(例如 HTTP 或 TCP)和編碼。 策略包括安全要求和其他條件,必須滿足這些要求和條件才能與服務進行通訊。
服務運行時
服務運行時層包含僅在服務實際運行期間發生的行為,即該服務的運行時行為。
遏制控制處理的訊息數,如果對服務的需求增長到預設限制,該訊息數則會發生變化。錯誤行為指定服務出現內部錯誤時應採取的操作,例如控制傳遞給用戶端的信
息 (資訊過多會向惡意使用者提供攻擊的機會)。中繼資料行為控制是否以及如何向外部提供中繼資料。
執行個體行為指定可啟動並執行服務執行個體的數目(例如,singleton 指定只能用單一執行個體來處理所有訊息)。
通過事務行為,可以在失敗時復原已進行交易處理的操作。 調度行為用於控制 WCF 基礎結構處理訊息的方式。
通過擴充性功能可以自訂運行時進程。 例如,訊息檢查功能用於檢查訊息的各個部分,使用參數篩選功能可以根據作用於訊息頭的篩選器來執行預設操作。
訊息傳遞
訊息傳遞層由通道組成。 通道是以某種方式對訊息進行處理(例如通過對訊息進行身分識別驗證)的組件。 一組通道也稱為“通道堆棧”。 通道對訊息和訊息頭進行操作。 這與服務運行時層不同,服務運行時層主要涉及對訊息本文內容的處理。
有兩種類型的通道:傳輸通道和協議通道。
傳
輸通道讀取和寫入來自網路(或外部的某些其他通訊點)的訊息。 某些傳輸通道使用編碼器來將訊息(表示為 XML
Infoset)轉換為網路所使用的位元組流的表示形式,或將位元組流表示形式轉換為訊息。 傳輸通道的樣本包括 HTTP、具名管道、TCP 和
MSMQ。 編碼的樣本包括 XML 和最佳化的二進位檔案。
協議通道經常通過讀取或寫入訊息的其他頭的方式來實現訊息處理協議。 此類協議的樣本包括 WS-Security 和 WS-Reliability。
消
息傳遞層說明資料的可能格式和交換模式。 WS-Security 是對在訊息層啟用安全性的 WS-Security 規範的實現。 通過
WS-Reliable Messaging 通道可以保證訊息的傳遞。 編碼器提供了大量的編碼,可使用這些編碼來滿足訊息的需要。 HTTP
通道指定應使用超文字傳輸通訊協定 (HTTP)來傳遞訊息。 同理,TCP 通道指定 TCP 協議。
事務流通道控制已經過交易處理的訊息模式。通過具名管道通道可以進行處理序間通訊。 使用 MSMQ 通道可以與 MSMQ 應用程式進行互操作。
承載和啟用
服務的最終形式為程式。 與其他程式類似,服務必須在可執行檔中運行。 這稱為“自承載”服務。
某
些服務(如 IIS 或 Windows 啟用服務 (WAS))“被承載”,即在外部代理管理的可執行檔中運行。 通過 WAS,可以在運行
WAS 的電腦上部署 WCF 應用程式時自動啟用該應用程式。 還可通過可執行檔(.exe 檔)的形式來手動運行服務。 服務也可作為
Windows 服務自動運行。 COM+ 組件也可作為 WCF 服務承載。