WCF Web HTTP 程式設計物件模型

WCF WEB HTTP 程式設計模型可讓開發人員透過基本 HTTP 要求即可公開 Windows Communication Foundation (WCF) Web 服務,而不需要使用 SOAP。 WCF WEB HTTP 程式設計模型建置在現有 WCF 擴充性模型之上。 這個模型會定義下列類別:

程式設計模型:

通道與發送器基礎結構:

公用程式類別和擴充點:

AspNetCacheProfileAttribute

AspNetCacheProfileAttribute,套用至服務作業時,表示組態檔中的 ASP.NET 輸出快取設定檔,此設定檔應該用來快取 ASP .NET 輸出快取中作業傳來的回應。 此屬性僅採用一個參數,也就是在組態檔中指定快取設定的快取設定檔名稱。

WebGetAttribute

您可以使用 WebGetAttribute 屬性將服務作業標示為回應至 HTTP GET 要求。 這是一種被動作業行為 (IOperationBehavior 方法不會執行任何動作),會將中繼資料新增至作業描述中。 套用 WebGetAttribute 會沒有作用,除非已將在作業描述 (尤其是 WebHttpBehavior) 中尋找此中繼資料的行為新增至服務的行為集合中。 WebGetAttribute 屬性會採用下表所示的選用參數。

參數 描述
BodyStyle 控制是否要將屬性所套用至的服務作業中,所傳送和接收的要求和回應包裝起來。
RequestFormat 控制格式化要求訊息的方法。
ResponseFormat 控制格式化回應訊息的方法。
UriTemplate 指定 URI 樣板,這個樣板會控制對應至套用屬性之服務作業的 HTTP 要求。

WebHttpBinding

WebHttpBinding 類別透過使用 WebMessageEncodingBindingElement,併入了 XML、JSON 和原始二進位資料的支援。 這是由 HttpsTransportBindingElementHttpTransportBindingElementWebHttpSecurity 物件所組成。 WebHttpBinding 是設計與 WebHttpBehavior 配合使用。

WebInvokeAttribute

WebInvokeAttribute 屬性類似於 WebGetAttribute,但它可用來將服務作業標示為回應至 GET 以外的 HTTP 要求。 這是一種被動作業行為 (IOperationBehavior 方法不會執行任何動作),會將中繼資料新增至作業描述中。 套用 WebInvokeAttribute 會沒有作用,除非已將在作業描述 (尤其是 WebHttpBehavior) 中尋找此中繼資料的行為新增至服務的行為集合中。

WebInvokeAttribute 屬性會採用下表所示的選用參數。

參數 描述
BodyStyle 控制是否要將屬性所套用至的服務作業中,所傳送和接收的要求和回應包裝起來。
Method 指定服務作業對應至的 HTTP 方法。
RequestFormat 控制格式化要求訊息的方法。
ResponseFormat 控制格式化回應訊息的方法。
UriTemplate 指定 URI 樣板,這個樣板會控制對應至套用屬性之服務作業的 GET 要求。

UriTemplate

UriTemplate 類別可讓您定義一組結構類似的 URI。 樣板中則包含兩個部分:路徑和查詢。 路徑則包含一系列以斜線 (/) 分隔的區段。 每個區段都有常值、變數值 (寫在大括號 [{ }] 內,限制為完全符合某個區段的內容) 或必須出現在路徑結尾的萬用字元 (以星號 [*] 表示,會符合路徑其餘部分)。 可以完全省略查詢運算式。 如果出現,會指定一系列非循序的名稱/值組。 查詢運算式的元素可以是常值組 (?x=2) 或變數組 (?x={value})。 不允許使用未成對的值。 WCF WEB HTTP 程式設計模型會在內部使用 UriTemplate,以將特定 URI 或 URI 群組對應至服務作業。

UriTemplateTable

UriTemplateTable 類別表示一組相關聯的 UriTemplate 物件,而這限制為開發人員所選擇的物件。 它可讓您比對候選的統一資源識別元 (URI) 和該組物件中的範本,並擷取與相符範本關聯的資料。 WCF WEB HTTP 程式設計模型會在內部使用 UriTemplateTable,以將特定 URI 或 URI 群組對應至服務作業。

WebServiceHost

WebServiceHost 會擴充 ServiceHost,讓它可更輕鬆裝載非 SOAP Web 式服務。 如果 WebServiceHost 在服務描述中找不到端點,則會自動在服務的基底位址中建立預設端點。 建立預設 HTTP 端點時,WebServiceHost 也會停用 HTTP 說明網頁和 Web 服務描述語言 (WSDL) 的 GET 功能,使中繼資料端點不會干擾預設 HTTP 端點。 WebServiceHost 也會確保所有使用 WebHttpBinding 的端點都已附加必要的 WebHttpBehavior。 最後,WebServiceHost 會自動設定端點的繫結,以在安全虛擬目錄中使用時處理相關聯的網際網路資訊服務 (IIS) 安全性設定。

WebServiceHostFactory

當服務是在網際網路資訊服務 (IIS) 或 Windows Process Activation Service (WAS) 下裝載時,可以使用 WebServiceHostFactory 類別以動態建立 WebServiceHost。 和主應用程式在其中具現化 WebServiceHost 的自我裝載服務不同,透過 IIS 或 WAS 裝載的服務會使用這個類別來建立用於服務的 WebServiceHost。 接收到服務的傳入要求時,就會呼叫 CreateServiceHost(Type, Uri[]) 方法。

WebHttpBehavior

WebHttpBehavior 類別會對服務模型層中的 Web 式服務支援,提供必要的格式器、作業選取器等等。 這個動作會實作為端點行為 (用於與 WebHttpBinding 搭配使用),並可對每個端點指定格式器和作業選取器,因此可讓相同的服務實作可同時公開 SOAP 和 POX 端點。

擴充 WebHttpBehavior

使用一些虛擬方法即可擴充 WebHttpBehaviorGetOperationSelector(ServiceEndpoint)GetReplyClientFormatter(OperationDescription, ServiceEndpoint)GetRequestClientFormatter(OperationDescription, ServiceEndpoint)GetReplyDispatchFormatter(OperationDescription, ServiceEndpoint)GetRequestDispatchFormatter(OperationDescription, ServiceEndpoint)。 開發人員可以從 WebHttpBehavior 衍生類別,並覆寫這些方法以自訂預設行為。

WebScriptEnablingBehavior 是擴充 WebHttpBehavior 的範例。 WebScriptEnablingBehavior 可啟用 Windows Communication Foundation (WCF) 端點,以從瀏覽器型 ASP.NET AJAX 用戶端接收 HTTP 要求。 使用 HTTP POST 的 AJAX 服務是使用此擴充點的範例。

警告

當使用 WebScriptEnablingBehavior 時,UriTemplateWebGetAttribute 屬性內不支援WebInvokeAttribute

WebHttpDispatchOperationSelector

WebHttpDispatchOperationSelector 類別會使用 UriTemplateUriTemplateTable 類別,以將呼叫分派至服務作業。

相容性

WCF WEB HTTP 程式設計模型不會使用 SOAP 型訊息,因此不會支援 WS-* 通訊協定。 不過,您可以透過兩個不同的端點來公開相同的合約:一個端點使用 SOAP,而另一個端點不使用 SOAP。 請參閱如何:將合約公開給 SOAP 和 Web 用戶端,以查看範例。

安全性

由於 WCF WEB HTTP 程式設計模型不支援 WS-* 通訊協定,要保護 WCF WEB HTTP 程式設計模型上所建置 Web 服務安全的唯一方法,即是運用 SSL 公開服務。 如需使用 IIS 7.0 設定 SSL 的詳細資訊,請參閱如何在 IIS 中實作 SSL

另請參閱