淺談WCF
什麽是WCF
先看看官方說法:
Windows Communication Foundation (WCF) 是用於構建面向服務的應用程序的框架。借助 WCF,可以將數據作為異步消息從一個服務終結點發送至另一個服務終結點。服務終結點可以是由 IIS 承載的持續可用的服務的一部分,也可以是應用程序中承載的服務。終結點可以是從服務終結點請求數據的服務客戶端。簡單消息可以是作為 XML 發送的單個字符或單個單詞,復雜消息可以是二進制數據流。一些示例方案包括:
- 處理企業事務的安全服務。
- 將當前數據提供給其他服務(例如流量報告或其他監視服務)的服務。
- 使兩個人能夠實時通信或交換數據的聊天服務。
- 輪詢一個或多個服務以查找數據並將其以邏輯表現形式展示出來的面板應用程序。
- 將使用 Windows Workflow Foundation 實現的工作流作為 WCF 服務公開。
- 輪詢服務以查找最新數據源的 Silverlight 應用程序。
WCF是一個數據傳輸服務,對內提供豐富的承載模式,也就是可以在多種進程中運行,對外有豐富的綁定方式,即有多種傳輸方式和數據格式。
服務如何運行?
WCF和網頁一樣,自身並不能直接運行,所以它要寄宿到別的進程內。用官話說就是激活和承載。將寫的服務加載到合適的進程中,並調用相關的API使其處於活動狀態,這就是激活了,而加載這個服務的進程就是一個宿主。
一般情況服務和宿主是相互隔離的,雖然他們在一個進程內。
對於服務,在配置文件中也有單獨的配置節,與承載進程並不沖突。
宿主的作用就是啟動與關閉服務。
如何調用?
服務端設定輸出模式,即綁定。綁定類型很豐富,常用的通訊方式、協議都用上了,有基於http的Web 服務、REST、甚至直接文本,有基於TCP的遠程對象,還命名管道、消息隊列,能用的通訊方式都用上了,很大很全。
服務端的綁定決定了客戶端怎麽使用,根據綁定使用的協議調用就是了。有一點要說明的是,如果調用的客戶端剛好也是.Net寫的,只要客戶引用了定義契約的程序集,那客戶端都不用生成代理,直接激活使用,代碼語意完全保持一致。
使用場景
- 對系統進行分層,做到物理上的隔離。WCF提供的訪問安全機制也有效了保護了服務資源,對不同層次應用可以做數據級別的訪問控制。對應用系統的部署也可以更加的靈活。
- 多系統集成。由於WCF提供了豐富的數據格式,能夠滿足大部分應用系統的訪問要求,這樣就可以在數據層面,通過WFC將各類不同系統連接在一起。
總結
WCF是面向服務的一種平臺實現,開發時並不需要關註太多通訊與數據格式上的細節,因為這些都可以通過少量的配置就可以實現,這樣就可以把更多的精力放到業務邏輯上去。
淺談WCF