配置服務
配置服務概述
在設計和實現服務協定后,便可以進行服務的配置。在其中可以定義和自定義如何向客戶段公開服務,包括指定可以找到服務的地址,服務用於發送和接受消息的傳輸和消息編碼,以及服務需要的安全類型。
配置服務類型
使用配置文件配置
1) 使用配置文件配置WCF服務,可提供在部署時而非設計時提供終結點和服務行為數據的靈活性
2) 可以使用.NET Framework配置技術對WCF服務進行配置。通常向承載WCF服務的Internet信息服務網站的Web.Config文件添加Xml元素。通過這些元素可以逐台計算機更改詳細信息。此外WCF包括幾個系統提供的元素,用於快速選擇服務的最基本功能
3) WCF使用.NET Framework的System.Configuration配置系統
a) 使用IIs來承載服務--使用Web.Config文件
b) 使用其他宿主環境--或App.Config文件指定設置
服務節點配置圖
Service元素
每個服務都有以下屬性:
name:
制定提供服務協定的實現的類型,這是完全限定名稱(命名空間.類型名稱)
behaviorConfiguration:
指定一個在behaviors元素中找到的behavior元素的名稱,制定的行為控制操作,例如服務是否允許模擬。
endpoint元素
每個終結點都需要以下屬性表示的地址,綁定和協定:
Address
地址唯一標識終結點並告知潛在客戶服務的所在位置。
指定服務的統一資源標識符(URI),它可以是一個絕對地址,或者是一個相對於服務基址給定的地址,如果設置為空字符串,則指示在創建服務的ServiceHost時,終結點在指定的基址上可用。
終結點地址的定義
終結點地址由EndpointAddress類表示,該類包含一個表示服務地址的統一資源定位符(URI)。
大多數傳輸的地址URI包含四個部分,如下:
Http://www.wiki.com:116/Hello.svc/HelloEndPoint
這個URI具有以下四個部分:
方案:http:
計算機:www.wiki.com
端口(可選):116
路徑:/Hello.svc/HelloEndPoint
配置文件中配置終結點地址
代碼中配置終結點地址
元數據終結點地址
WCF服務通過發布一個或多個元數據終結點來發布元數據。發布元數據之后,可以通過標准協議(例如:WS-MetadataExchage(MEX)、HTTP/GET請求)來使用該元數據。
元數據的終結點類似於其他服務終結點:它們都有一個地址、一個綁定、一個協定,並且它們都可以通過配置或使用代碼添加到服務主機。
若要啟用發布元數據終結點,必須將ServiceMetadataBehavior服務行為添加到該服務,默認情況下WCF服務不發布元數據終結點,所以必須將它們顯示添加到服務才能為服務啟用元數據發布。
元數據終結點示意圖
Binding
綁定指定如何與終結點進行通信。
通常指定一個類似WsHttpBinding的系統提供的綁定,但是也可以指定一個用戶自定義的綁定。指定的綁定確定傳輸協議類型,安全和使用的編碼,以及是否支持或啟用可靠會話、事務或流
bindingConfiguration
如果必須修改綁定的默認值,則可通過在bindings元素中配置相應的binding元素來執行此操作。此屬性應賦予與用於更改默認值的binding元素的name屬性相同的值。
contract
概述了終結點向客戶端公開的功能。
指定定義協定的接口。這是在由service元素的name屬性指定的公共語言運行庫類型中實現的接口
Endpoint節點示意圖
WCF基庫中預定義的所有綁定說明圖
Behavior元素示意圖
綁定
綁定是用於指定連接到WCF服務終結點所必須的通信詳細信息的對象,在WCF中每個終結點都要求正確指定綁定。
綁定必須指定要使用的傳輸(TCP、HTTP),還可通過綁定設置如安全、事務支持等其他特征。
綁定中的信息可簡單也可復雜。最基本的綁定僅指定必須用於連接到終結點的傳輸協議(如THHP),一般來說,綁定包含的有關如何連接到終結點的信息屬於以下類別中的一種。
協議
確定要使用的安全機制:可靠消息傳遞功能或事物上下文交流設置
編碼
確定消息編碼(例如:二進制或文本)
傳輸
確定要使用基礎傳輸協議(例如:TCP、HTTP)
系統提供的綁定
上邊已經提到了綁定的信息業可能很復雜,而且某些設置可能與其他設置不兼容,因此,WCF包含了一組系統提供的綁定,這些內置綁定基本可以滿足大多數應用程序要求。一些綁定示例:
BasicHttpBinding
一個HTTP協議綁定,適用於連接到符合WS-I基本配置文件規范的Web服務(例如:基於ASP.NET Web服務的服務)。
WSHttpBinding
一個可互操作的綁定,適用於連接到符合WS-*協議的終結點。
NetNamedPipeBinding
使用.NET Framework 連接到同一計算機上的其他WCF終結點。
NetMsmqBinding
使用.NET Framework 創建與其他WCF終結點的排隊消息連接。
使用自己的綁定
使用自己的綁定
如果系統提供的綁定都不具有服務應用程序所需的正確功能組合,則可以創建自己的綁定。方法如下:
1) 可以使用CustomBinding對象從預先存在的綁定元素創建新的綁定。
2) 也可以通過從Binding綁定派生來創建完全由用戶定義的綁定。
使用綁定
使用綁定需要執行兩個基本的步驟:
1) 選擇或定義綁定,最簡單方法是選擇WCF包含的系統提供綁定中的一個,通過該綁定的默認設置來使用它。
2) 創建一個使用所選擇或者定義的綁定的終結點。
定義綁定
可以通過代碼或通過配置兩種方式定義綁定,且這兩種方法與您使用的是系統提供的綁定還是自定義綁定無關。
使用代碼可以使在設計時對綁定的定義擁有完全的控制。使用配置則使系統管理員或WCF服務或客戶端的用戶可以更改綁定的參數,而不必重新編譯服務應用程序,由於無法預測用於部署WCF應用程序的特定計算機要求,因為通常需要這種靈活性,通過將綁定(尋址)信息保存在代碼外部,人們可以更改這些信息,而不必重新編譯或重新部署應用程序。
在這里需要注意的是代碼中定義的綁定是在配置中指定的綁定之后創建的,這使得代碼定義的綁定可以覆蓋配置中定義的任何綁定。
好了,這一節就到這里了,希望可以給大家帶來一些幫助。因為這一節需要編碼的東西不是很多,所以就沒有具體的代碼示例,只是截了圖,關鍵在於理解。