WCF Web 程式設計物件模型
HTTP Web 程式設計模型可讓開發人員透過基本 HTTP 要求即可公開 Windows Communication Foundation (WCF) Web 服務,而不需要使用 SOAP。HTTP Web 程式設計模型會建置在現有 WCF 擴充性模型之上。這個模型會定義下列類別:
程式設計模型:
通道與發送器基礎結構:
公用程式類別和擴充點:
WebGetAttribute
您可以使用 WebGetAttribute 屬性將服務作業標示為回應至 HTTP GET 要求。這是一種被動作業行為 (IOperationBehavior 方法不會執行任何動作),會將中繼資料新增至作業描述中。套用 WebGetAttribute 會沒有作用,除非已將在作業描述 (尤其是 WebHttpBehavior) 中尋找此中繼資料的行為新增至服務的行為集合中。WebGetAttribute 屬性會採用下表中的選用參數。
參數 | 描述 |
---|---|
BodyStyle |
控制是否要將屬性所套用至的服務作業中,所傳送和接收的要求和回應包裝起來。 |
RequestFormat |
控制格式化要求訊息的方法。 |
ResponseFormat |
控制格式化回應訊息的方法。 |
UriTemplate |
指定 URI 樣板,這個樣板會控制對應至套用屬性之服務作業的 GET 要求。 |
WebHttpBinding
WebHttpBinding 透過使用 WebMessageEncodingBindingElement,併入了 XML、JSON 和原始二進位資料的支援。這是由 HttpsTransportBindingElement、HttpTransportBindingElement 和 WebHttpSecurity 物件所組成。WebHttpBinding 是設計與 WebHttpBehavior 配合使用。
WebInvokeAttribute
WebInvokeAttribute 屬性類似於 WebGetAttribute,但它可用來將服務作業標示為回應至 GET 以外的 HTTP 要求。這是一種被動作業行為 (IOperationBehavior 方法不會執行任何動作),會將中繼資料新增至作業描述中。套用 WebInvokeAttribute 會沒有作用,除非已將在作業描述 (尤其是 WebHttpBehavior) 中尋找此中繼資料的行為新增至服務的行為集合中。
WebGetAttribute 屬性會採用下表中的選用參數。
參數 | 說明 |
---|---|
BodyStyle |
控制是否要將屬性所套用至的服務作業中,所傳送和接收的要求和回應包裝起來。 |
Method |
指定服務作業對應至的 HTTP 方法。 |
RequestFormat |
控制格式化要求訊息的方法。 |
ResponseFormat |
控制格式化回應訊息的方法。 |
UriTemplate |
指定 URI 樣板,這個樣板會控制對應至套用屬性之服務作業的 GET 要求。 |
UriTemplate
UriTemplate 類別可讓您定義一組結構類似的 URI。樣板中則包含兩個部分:路徑和查詢。路徑則包含一系列以斜線 (/) 分隔的區段。每個區段都有常值、變數值 (寫在大括號 [{ }] 內,限制為完全符合某個區段的內容) 或必須出現在路徑結尾的萬用字元 (以星號 [*] 表示,會符合路徑其餘部分)。可以完全省略查詢運算式。如果出現,會指定一系列非循序的名稱/值組。查詢運算式的項目可以為常值組 (?x=2) 或變數組 (?x={value})。不允許使用非配對的值。WCF Web 程式設計模型會在內部使用 UriTemplate,以將特定 URI 或 URI 群組對應至服務作業。
UriTemplateTable
UriTemplateTable 類別表示一組相關聯的 UriTemplate 物件,而這限制為開發人員所選擇的物件。您可以比對候選的統一資源識別碼 (URI) 和集合中的樣板,並擷取與相符的樣板相關聯的資料。WCF Web 程式設計模型會在內部使用 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 方法。
WebHttpBehavior
WebHttpBehavior 會對服務模型層中的 Web 式服務支援,提供必要的格式器、作業選取器等等。這個動作會實作為端點行為 (用於與 WebHttpBinding 搭配使用),並可對每個端點指定格式器和作業選取器,因此可讓相同的服務實作可同時公開 SOAP 和 POX 端點。
擴充 WebHttpBehavior
使用一些虛擬方法即可擴充 WebHttpBehavior:GetOperationSelector、GetReplyClientFormatter、GetRequestClientFormatter、GetReplyDispatchFormatter 和 GetRequestDispatchFormatter。開發人員可以從 WebHttpBehavior 衍生類別,並覆寫這些方法以自訂預設行為。
WebScriptEnablingBehavior 是擴充 WebHttpBehavior 的範例。WebScriptEnablingBehavior 讓 Windows Communication Foundation (WCF) 端點可從瀏覽器型 ASP.NET AJAX 用戶端接收 HTTP 要求。HTML Form Handler Sample是使用這個擴充點的範例。
WebHttpDispatchOperationSelector
WebHttpDispatchOperationSelector 會使用 UriTemplate 和 UriTemplateTable 類別,以將呼叫分派至服務作業。
相容性
WCF Web 程式設計模型不會使用 SOAP 型訊息,因此不會支援 WS-* 通訊協定。不過,您可以透過兩個不同的端點來公開相同的合約,一個端點使用 SOAP,而另一個端點不使用 SOAP。如需範例,請參閱 HOW TO:將合約公開給 SOAP 和 Web 用戶端。
請參閱
參考
WebHttpBinding
WebGetAttribute
WebInvokeAttribute
WebHttpBehavior
WebHttpDispatchOperationSelector