基本 Web 程式設計模型範例
這個範例會實作可使用 HTTP GET 和 POST 來呼叫的服務,以示範 Windows Communication Foundation (WCF) Web 程式設計模型延伸的基本項目。此範例會實作成裝載服務及實作用戶端的單一處理序。用戶端則使用 HTTP 來呼叫服務。
![]() |
---|
要建置和執行這個範例,必須安裝 .NET Framework version 3.5。要開啟專案和方案檔,必須要有 Visual Studio 2008。 |
組件和命名空間
在這個 SDK 所包含的 System.ServiceModel.Web 組件中,會實作 WCF Web 程式設計模型。這個組件是衍生自安裝為 .NET Framework 3.0 一部分的 System.ServiceModel。
Program.cs 檔案 (其中包含服務和用戶端) 會參考下列重要的命名空間:
- System.ServiceModel:WCF 程式設計模型的最上層命名空間。
- System.ServiceModel.Web:Web 程式設計模型延伸的最上層命名空間,其中包含新的 WebGetAttribute 和 WebInvokeAttribute 屬性。
- System.ServiceModel.Description:包含 WebHttpBinding 和 WebHttpBehavior 的命名空間。
服務
此範例服務會公開含有 EchoWithGet
和 EchoWithPost
這兩項作業的合約,如下列程式碼所示。
[ServiceContract]
public interface IService
{
[OperationContract]
[WebGet]
string EchoWithGet(string s);
[OperationContract]
[WebInvoke]
string EchoWithPost(string s);
}
如同其他 WCF 服務,ServiceContractAttribute 屬性會套用至 IService
合約,而 OperationContractAttribute 則套用至其方法。這個服務合約使用兩個新的 Web 程式設計模型屬性:WebGetAttribute 和 WebInvokeAttribute。這些屬性會指示透過 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 會使用 WebHttpBinding 和 WebHttpBehavior,自動在基底位址建立預設端點,因此不需要明確地定義端點。這個型別是可以不使用 SOAP 而直接透過 HTTP 進行通訊的新標準繫結。這個繫結支援 XML 訊息以及其他類型的非 XML 內容 (例如,純文字、影像或其他位元組資料流)。
用戶端
這個範例也會說明如何在用戶端使用 Web 程式設計模型以傳送 HTTP 要求。
下列用戶端通道是使用 WebChannelFactory 所建立。
using (WebChannelFactory<IService> cf = new WebChannelFactory<IService>(baseAddress))
{
IService channel = cf.CreateChannel();
...
}
和 WebServiceHost 類似的是,WebChannelFactory
會使用 WebHttpBinding 和 WebHttpBehavior 在基底位址建立預設端點。
在建立 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
若要設定、建置及執行範例
若要建置方案的 C# 或 Visual Basic .NET 版本,請遵循建置 Windows Communication Foundation 範例中的指示。
若要在單一或跨電腦的組態中執行本範例,請遵循執行 Windows Communication Foundation 範例中的指示。
請參閱
工作
Send comments about this topic to Microsoft.
© 2007 Microsoft Corporation. All rights reserved.