共用方式為


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})。 不允許未配對的值。 UriTemplate WCF WEB HTTP 程式設計模型會在內部使用,將特定 URI 或 URI 群組對應至服務作業。

Uri範本表

類別 UriTemplateTable 代表系結至開發人員選擇對象的關聯物件集 UriTemplate 。 它可讓您比對集合中範本的候選統一資源標識碼(URI),並擷取與相符範本相關聯的數據。 UriTemplateTable WCF WEB HTTP 程式設計模型會在內部使用,將特定 URI 或 URI 群組對應至服務作業。

WebServiceHost

WebServiceHost 擴充 ServiceHost ,讓您更輕鬆地裝載非SOAP Web 樣式服務。 如果在 WebServiceHost 服務描述中找不到任何端點,它會自動在服務的基位址建立預設端點。 建立預設 HTTP 端點時, WebServiceHost 也會停用 HTTP 說明頁面和 Web 服務描述語言 (WSDL) GET 功能,讓元數據端點不會干擾預設 HTTP 端點。 WebServiceHost 也確保所有使用 WebHttpBinding 的端點都已附加上必需的 WebHttpBehavior。 最後,WebServiceHost 自動設定端點的繫結,以便在使用安全虛擬目錄時配合相關聯的 Internet Information Services(IIS)安全性設定。

WebServiceHostFactory

當服務裝載在 Internet Information Services (IIS) 或 Windows Process Activation Service (WAS) 底下時,類別 WebServiceHostFactory 可用來動態建立 WebServiceHost 。 不同於主機應用程式實例化 WebServiceHost 的自我主機設置的服務,裝載於 IIS 或 WAS 下的服務會使用此類別來建立 WebServiceHost 服務。 收到服務的連入要求時,會呼叫 CreateServiceHost(Type, Uri[]) 方法。

WebHttpBehavior

類別 WebHttpBehavior 會提供服務模型層 Web 樣式服務支援所需的格式器、作業選取器等。 這會實作為端點行為(與 WebHttpBinding搭配使用),並允許為每個端點指定格式器和作業選取器,讓相同的服務實作同時公開 SOAP 和 POX 端點。

擴充 WebHttpBehavior

WebHttpBehavior可以使用許多虛擬方法來擴充:GetOperationSelector(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時,UriTemplate不支援在WebGetAttributeWebInvokeAttribute屬性內使用。

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

另請參閱