共用方式為


通道處理站

ChannelFactory 範例示範用戶端應用程式如何使用 ChannelFactory 類別而非使用產生的用戶端來建立通道。 這個範例是以實作計算機服務的使用者入門範例為基礎。

注意

此範例的安裝程序與建置指示位於本主題的結尾。

此範例使用 ChannelFactory<TChannel> 類別來建立服務端點的通道。 一般來說,若要建立服務端點的通道,您必須使用 ServiceModel 中繼資料公用程式工具 (Svcutil.exe) 來產生用戶端類型,並為產生的類型建立執行個體。 您也可以使用 ChannelFactory<TChannel> 類別來建立通道,如此範例所示。 下列程式碼範例所建立的服務,與使用者入門中的服務一模一樣。

EndpointAddress address = new EndpointAddress("http://localhost/servicemodelsamples/service.svc");
WSHttpBinding binding = new WSHttpBinding();
ChannelFactory<ICalculator> factory = new
                    ChannelFactory<ICalculator>(binding, address);
ICalculator channel = factory.CreateChannel();

重要

如果您是在跨電腦的情況中執行此範例,必須使用正在執行服務的電腦完整名稱來取代先前程式碼中的 "localhost"。 此範例不會使用組態來設定端點位址,因此必須透過程式碼來完成。

一旦建立了通道,即可透過叫用已產生用戶端的相同方式來叫用服務作業。

// Call the Add service operation.
double value1 = 100.00D;
double value2 = 15.99D;
double result = channel.Add(value1, value2);
Console.WriteLine("Add({0},{1}) = {2}", value1, value2, result);

若要關閉通道,必須先將通道轉換為 IClientChannel 介面。 這是因為產生的通道會使用 ICalculator 介面在用戶端應用程式中宣告,且使用的方法與 AddSubtract 類似,但和 Close 不同。 Close 方法源自 ICommunicationObject 介面。

// Close the channel.
 ((IClientChannel)client).Close();

當您執行範例時,作業要求和回應會顯示在用戶端主控台視窗中。 在用戶端視窗中按 ENTER 鍵,關閉用戶端應用程式。

Add(100,15.99) = 115.99
Subtract(145,76.54) = 68.46
Multiply(9,81.25) = 731.25
Divide(22,7) = 3.14285714285714

Press <ENTER> to terminate client.

若要安裝、建置及執行範例

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

  2. 若要建置方案的 C# 或 Visual Basic .NET 版本,請遵循 Building the Windows Communication Foundation Samples中的指示。 請注意,此範例不會啟用中繼資料發行。 您必須先為此範例啟用中繼資料發行,以重新產生用戶端類型。

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

若要執行跨電腦範例

請使用正在執行服務的電腦完整名稱來取代下列程式碼中的 "localhost"。

EndpointAddress address = new EndpointAddress("http://localhost/servicemodelsamples/service.svc");