共用方式為


基本 Web 程式設計模型範例

這個範例會實作可使用 HTTP GET 和 POST 來呼叫的服務,以示範 Windows Communication Foundation (WCF) Web 程式設計模型延伸的基本項目。此範例會實作成裝載服務及實作用戶端的單一處理序。用戶端則使用 HTTP 來呼叫服務。

Bb472530.note(zh-tw,VS.90).gif注意:
要建置和執行這個範例,必須安裝 .NET Framework version 3.5。要開啟專案和方案檔,必須要有 Visual Studio 2008。

組件和命名空間

在這個 SDK 所包含的 System.ServiceModel.Web 組件中,會實作 WCF Web 程式設計模型。這個組件是衍生自安裝為 .NET Framework 3.0 一部分的 System.ServiceModel

Program.cs 檔案 (其中包含服務和用戶端) 會參考下列重要的命名空間:

服務

此範例服務會公開含有 EchoWithGetEchoWithPost 這兩項作業的合約,如下列程式碼所示。

[ServiceContract]
public interface IService
{
   [OperationContract]
   [WebGet]
   string EchoWithGet(string s);

   [OperationContract]
   [WebInvoke]
   string EchoWithPost(string s);
}

如同其他 WCF 服務,ServiceContractAttribute 屬性會套用至 IService 合約,而 OperationContractAttribute 則套用至其方法。這個服務合約使用兩個新的 Web 程式設計模型屬性:WebGetAttributeWebInvokeAttribute。這些屬性會指示透過 HTTP 提供合約作業時應採取的方式。

WebGetAttribute 屬性套用至 EchoWithGet 方法,即表示應該以回應 HTTP GET 方法的 URI 來提供方法 (例如,https://localhost:8000/EchoWithGet?s=Hello, world!)。WCF 用戶端以及 Web 瀏覽器都可以使用這個 URI。將 WebInvokeAttribute 套用至 EchoWithPost 方法,則表示應該在回應 HTTP POST 方法的 URI 上提供作業。方法的參數會在 POST 要求的本文中編碼為 XML。WCF 用戶端以及能夠建立含 XML 本文之 HTTP POST 要求 (例如,瀏覽器的 XmlHttpRequest 物件) 的 Web 用戶端都可以使用這個 URI。如需 Web 程式設計模型的詳細資訊,請參閱這個 SDK 中的進階 Web 程式設計範例。

服務的下列端點會明確定義。

using (WebServiceHost host = new WebServiceHost(typeof(Service), baseAddress))
{
    host.Open();

    ...
}

服務是使用 WebServiceHost 型別所裝載,此型別是 ServiceHost 的全新衍生,可以簡化使用 Web 程式設計模型延伸的裝載服務。WebServiceHost 會使用 WebHttpBindingWebHttpBehavior,自動在基底位址建立預設端點,因此不需要明確地定義端點。這個型別是可以不使用 SOAP 而直接透過 HTTP 進行通訊的新標準繫結。這個繫結支援 XML 訊息以及其他類型的非 XML 內容 (例如,純文字、影像或其他位元組資料流)。

用戶端

這個範例也會說明如何在用戶端使用 Web 程式設計模型以傳送 HTTP 要求。

下列用戶端通道是使用 WebChannelFactory 所建立。

using (WebChannelFactory<IService> cf = new WebChannelFactory<IService>(baseAddress))
{
    IService channel = cf.CreateChannel(); 
    ...
}

WebServiceHost 類似的是,WebChannelFactory 會使用 WebHttpBindingWebHttpBehavior 在基底位址建立預設端點。

在建立 WebChannelFactory 之後,用戶端應用程式會建立對服務的通道,並在呼叫 EchoWithGet 之後,緊接著呼叫 EchoWithPost

當互動完成時,程式會等候您按下按鍵。在這段期間,服務仍然主動接聽。一旦按下按鍵,用戶端和伺服器都會關閉,而程式則會終止。

當您執行服務時,會顯示下列輸出。

Calling EchoWithGet via HTTP GET:

Output: You said Hello, world

當這個範例執行時,在 Web 瀏覽器中巡覽至「https://localhost:8000/EchoWithGet?s=Hello, world!」可以產生相同的輸出。

Calling EchoWithPost via HTTP POST:

Output: You said Hello, world

Press any key to terminate

若要設定、建置及執行範例

  1. 請確定您已執行 Windows Communication Foundation 範例的單次安裝程序

  2. 若要建置方案的 C# 或 Visual Basic .NET 版本,請遵循建置 Windows Communication Foundation 範例中的指示。

  3. 若要在單一或跨電腦的組態中執行本範例,請遵循執行 Windows Communication Foundation 範例中的指示。

請參閱

工作

進階 Web 程式設計

Send comments about this topic to Microsoft.
© 2007 Microsoft Corporation. All rights reserved.