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 介面宣告,該介面包含 Add 和 Subtract 方法,但不包含 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.
要設定、建置和執行範例,請執行以下步驟:
請確定您已針對 Windows Communication Foundation 範例 執行One-Time 安裝程式。
若要建置解決方案的 C# 或 Visual Basic .NET 版本,請遵循建置 Windows Communication Foundation 範例 中中的指示。 請注意,此範例不會啟用元數據發佈。 您必須先啟用此範例的元數據發佈,才能重新產生客戶端類型。
若要在單一或跨計算機組態中執行範例,請遵循執行 Windows Communication Foundation 範例 中的指示。
若要執行範例跨計算機
將下列程式代碼中的 「localhost」 取代為執行服務之計算機的完整名稱。
EndpointAddress address = new EndpointAddress("http://localhost/servicemodelsamples/service.svc");