windows communication foundation(wcf)是由微軟開發的一系列支援資料通訊的應用程式框架,可以翻譯為windows 通訊開發平台。
整合了原有的windows通訊的 .net remoting,webservice,socket的機制,並融合有http和ftp的相關技術。
是windows平台上開發分布式應用最佳的實踐方式。
簡單的歸結為四大部分
1>.網路服務的協議,即用什麼網路協議開放客戶端接入。
2>.業務服務的協議,即宣告服務提供哪些業務。
3>.資料型別宣告,即對客戶端與伺服器端通訊的資料部分進行一致化。
4>.傳輸安全性相關的定義。
wcf的服務不能孤立地存在,需要寄宿於乙個執行著的程序中,我們把承載wcf服務的程序稱為宿主,為服務指定宿主的過程稱為服務寄宿(service hosting)。在我們的計算服務應用中,採用了兩種服務寄宿方式:通過自我寄宿(self-hosting)的方式建立乙個控制台應用作為服務的宿主(寄宿程序為hosting.exe);通過iis寄宿方式將服務寄宿於iis中(寄宿程序為iis的工作進行w3wp.exe)。客戶端通過另乙個控制台應用模擬(程序為client.exe)。
服務契約
wcf採用基於契約的互動方式實現了服務的自治,以及客戶端和服務端之間的松耦合。wcf包含四種型別的契約:服務契約、資料契約、訊息契約和錯誤契約,這裡著重於服務契約。從功能上講,服務契約抽象了服務提供的所有操作;而站在訊息交換的角度來看,服務契約則定義了基於服務呼叫的訊息交換過程中,請求訊息和回覆訊息的結構,以及採用的訊息交換模式。
一般地,我們通過介面的形式定義服務契約。通過下面的**,將乙個介面icalculator定義成服務契約。wcf廣泛採用基於自定義特性(custom attribtue)的宣告式程式設計模式,我們通過在介面上應用system.servicemodel.servicecontractattribute特性將乙個介面定義成服務契約。在應用servicecontractattribute特性的同時,還可以指定服務契約的名稱和命名空間。
通過應用servicecontractattribute特性將介面定義成服務契約之後,介面的方法成員並不能自動成為服務的操作。在此方面,wcf採用的是顯式選擇(explicit opt-in)的策略:我們須要在相應的操作方法上面顯式地應用operationcontractattribute特性。
1當服務契約成功建立時,我們需要通過實現服務契約來建立具體的wcf服務。wcf服務要實現服務契約的藉口,實現了所有的服務操作。using
system.servicemodel;23
namespace
wcflibrary
412 }
namespaceview codewcflibrary
", name);
return
wcfname;}}
}
wcf服務需要依存乙個執行著的程序(宿主),服務寄宿就是為服務指定乙個宿主的過程。wcf是乙個基於訊息的通訊框架,採用基於終結點(endpoint)的通訊手段。終結點由位址(address)、繫結(binding)和契約(contract)三要素組成,如圖3所示。由於三要素應為首字母分別為abc,所以就有了易於記憶的公式:endpoint = abc。乙個終結包含了實現通訊所必需的所有資訊,我們可以這樣認識終結點的abc:
服務寄宿的目的就是開啟乙個程序,為wcf服務提供乙個執行的環境。通過為服務新增乙個或多個終結點,使之暴露給潛給的服務消費者。服務消費者最終通過相匹配的終結點對該服務進行呼叫。
usingview codesystem;
using
system.servicemodel;
using
system.servicemodel.description;
using
wcflibrary;
namespace
wcfhost_console}}
}
在客戶端,要新增對服務的引用,可以採用vs自帶的服務引用,他會自動的生成包含乙個服務契約介面、乙個服務**物件和其他相關的類。然後我們就可以像呼叫普通的類的物件一樣呼叫服務,當然我們也可以通過配置檔案來實現服務的引用,在這裡終結點一定要和服務宿主物件的某乙個終結點相對應(因為乙個服務可以有多個終結點)。
客戶端的配置檔案如下:
呼叫**如下:
usingview codesystem;
using
wcftestconsole.serviceconsole;
namespace
wcftestconsole}}
WCF學習筆記 一
wcf是什麼?官方解釋 windows communication foundation wcf 是用於構建面向服務的應用程式的框架。借助 wcf,可以將資料作為非同步訊息從乙個服務終結點傳送至另乙個服務終結點。終結點可以是從服務終結點請求資料的服務客戶端。簡單訊息可以是作為 xml 傳送的單個字元...
WCF學習筆記 Address
address是什麼?address通過乙個uri來唯一的標識乙個wcf終節點 endpoint 它標示了訊息傳送的目的地。在wcf資料通訊中,他解決了服務在 的問題。address的組成 address在wcf中使用system.servicemodel.endpointaddress物件來表示的...
WCF學習筆記1
wcf全面解析 1 wcf初建 建立4個 第乙個類庫service.inte ce 用於服務契約 service contract 引用system.servicemodel.dll 第二個類庫service 用於實際第乙個類庫 第三個控制台hosting 作為服務宿主的控制台應用,引用上面兩個專案...