WCF服務基本概念詳解
WCF服務在實際應用中位開發人員帶來了不小的幫助。那么如何正確理解這一服務機制呢?在這篇文章中,我們將會通過對這內容的剖析為大家詳細講解一下相關應用技術,方便大家理解以及應用。#t#
什么是WCF服務
服務(Services)是公開的一組功能的集合。從軟件設計的角度考慮,軟件設計思想經歷了從函數發展到對象,從對象發展到組件,再從組件發展到服務的幾次變遷。在這樣一個漫長的發展旅程中,最后發展到服務的一步可以說是最具革新意義的一次飛躍。面向服務(Service-Orientation,SO)是一組原則的抽象,是創建面向服務應用程序的最佳實踐。如果你不熟悉面向服務的原則,可以參見附錄A,它介紹了使用面向服務的概況與目的。本書假定你對這些原則已經了然于胸。一個面向服務應用程序(SOA)將眾多服務聚集到單個邏輯的應用程序中,這就類似于面向組件的應用程序聚合組件,或者面向對象的應用程序聚合對象,如圖1-1所示。
圖1-1:面向服務應用程序
服務可以是本地的,也可以是遠程的,可以由多個參與方使用任意技術進行開發。服務與版本無關,甚至可以在不同的時區同時執行。服務內部包含了諸如語言、技術、平臺、版本與框架等諸多概念,而服務之間的交互,則只允許指定的通信模式。
WCF服務的客戶端只是使用服務功能的一方。理論上講,客戶端可以是任意的Windows窗體類、ASP.NET頁面或其他服務。
客戶端與服務通過消息的發送與接收進行交互。消息可以直接在客戶端與服務之間進行傳遞,也可以通過中間方進行傳遞。WCF中的所有消息均為SOAP消息。注意WCF的消息與傳輸協議無關,這與Web服務不同。因此,WCF服務可以在不同的協議之間傳輸,而不僅限于HTTP。WCF客戶端可以與非WCF服務完成互操作,而WCF服務也可以與非WCF客戶端交互。不過,如果需要同時開發客戶端與服務,則創建的應用程序兩端都要求支持WCF,這樣才能利用WCF的特定優勢。
因為服務的創建對于外界而言是不透明的,所以WCF服務通常通過公開元數據(Metadata)的方式描述可用的功能以及服務可能采用的通信方式。元數據的發布可以預先定義,它與具體的技術無關(Technology-Neutral),例如采用基于HTTP-GET方式的WSDL,或者符合元數據交換的行業標準。一個非WCF客戶端可以將元數據作為本地類型導入到本地環境中。相似的,WCF客戶端也可以導入非WCF服務的元數據,然后以本地CLR類與接口的方式進行調用。
WCF服務的執行邊界
WCF不允許客戶端直接與服務交互,即使它調用的是本地機器內存中的服務。相反,客戶端總是使用代理(Proxy)將調用轉發給服務。代理公開的操作與服務相同,同時還增加了一些管理代理的方法。
WCF允許客戶端跨越執行邊界與服務通信。在同一臺機器中,客戶端可以調用同一個應用程序域中的WCF服務,也可以在同一進程中跨應用程序域調用,甚至跨進程調用。


















