Как использовать клиент Windows Communication Foundation
Это последняя из шести задач, выполнение которых необходимо для создания базовой службы Windows Communication Foundation (WCF) и клиента, который может вызывать эту службу. Общие сведения обо всех шести задачах см. в разделе Учебник по началу работы.
После создания и настройки прокси Windows Communication Foundation (WCF) можно создать экземпляр клиента, скомпилировать клиентское приложение и использовать его для взаимодействия со службой WCF. В этом разделе описаны процедуры создания и использования клиента WCF. Эта процедура выполняет три операции.
Создает клиент WCF.
Вызывает операции службы из созданной учетной записи-посредника.
Закрывает клиент после завершения вызова операции.
Код, описанный в этой процедуре, также приведен в примере после процедуры. Код этой задачи необходимо помещать в метод Main()
созданного класса Program
в проекте клиента.
Использование клиента Windows Communication Foundation
Создайте экземпляр EndpointAddress для базового адреса службы, которую требуется вызвать, а затем создайте объект WCF
Client
.' Step 1: Create an endpoint address and an instance of the WCF Client. Dim epAddress As New EndpointAddress("https://localhost:8000/ServiceModelSamples/Service/CalculatorService") Dim Client As New CalculatorClient(New WSHttpBinding(), epAddress)
//Step 1: Create an endpoint address and an instance of the WCF Client. CalculatorClient client = new CalculatorClient();
Вызовите операции клиента из объекта
Client
.'Step 2: Call the service operations. 'Call the Add service operation. Dim value1 As Double = 100D Dim value2 As Double = 15.99D Dim result As Double = Client.Add(value1, value2) Console.WriteLine("Add({0},{1}) = {2}", value1, value2, result) 'Call the Subtract service operation. value1 = 145D value2 = 76.54D result = Client.Subtract(value1, value2) Console.WriteLine("Subtract({0},{1}) = {2}", value1, value2, result) 'Call the Multiply service operation. value1 = 9D value2 = 81.25D result = Client.Multiply(value1, value2) Console.WriteLine("Multiply({0},{1}) = {2}", value1, value2, result) 'Call the Divide service operation. value1 = 22D value2 = 7D result = Client.Divide(value1, value2) Console.WriteLine("Divide({0},{1}) = {2}", value1, value2, result)
// Step 2: Call the service operations. // Call the Add service operation. double value1 = 100.00D; double value2 = 15.99D; double result = client.Add(value1, value2); Console.WriteLine("Add({0},{1}) = {2}", value1, value2, result); // Call the Subtract service operation. value1 = 145.00D; value2 = 76.54D; result = client.Subtract(value1, value2); Console.WriteLine("Subtract({0},{1}) = {2}", value1, value2, result); // Call the Multiply service operation. value1 = 9.00D; value2 = 81.25D; result = client.Multiply(value1, value2); Console.WriteLine("Multiply({0},{1}) = {2}", value1, value2, result); // Call the Divide service operation. value1 = 22.00D; value2 = 7.00D; result = client.Divide(value1, value2); Console.WriteLine("Divide({0},{1}) = {2}", value1, value2, result);
Вызовите метод
Close
клиента WCF и дождитесь, пока пользователь нажмет клавишу ВВОД, чтобы завершить приложение.' Step 3: Closing the client gracefully closes the connection and cleans up resources. Client.Close() Console.WriteLine() Console.WriteLine("Press <ENTER> to terminate client.") Console.ReadLine()
//Step 3: Closing the client gracefully closes the connection and cleans up resources. client.Close(); Console.WriteLine(); Console.WriteLine("Press <ENTER> to terminate client."); Console.ReadLine();
Пример
В следующем примере показано, как создать клиент WCF, как вызвать операции клиента и как закрыть клиент после выполнения операции.
Скомпилируйте созданный клиент WCF и следующий пример кода в исполняемый файл с именем Client.exe. Не забудьте задать ссылку на System.ServiceModel при компиляции кода.
Imports System
Imports System.Collections.Generic
Imports System.Text
Imports System.ServiceModel
Module Client
Sub Main()
' Step 1: Create an endpoint address and an instance of the WCF Client.
Dim epAddress As New EndpointAddress("https://localhost:8000/ServiceModelSamples/Service/CalculatorService")
Dim Client As New CalculatorClient(New WSHttpBinding(), epAddress)
'Step 2: Call the service operations.
'Call the Add service operation.
Dim value1 As Double = 100D
Dim value2 As Double = 15.99D
Dim result As Double = Client.Add(value1, value2)
Console.WriteLine("Add({0},{1}) = {2}", value1, value2, result)
'Call the Subtract service operation.
value1 = 145D
value2 = 76.54D
result = Client.Subtract(value1, value2)
Console.WriteLine("Subtract({0},{1}) = {2}", value1, value2, result)
'Call the Multiply service operation.
value1 = 9D
value2 = 81.25D
result = Client.Multiply(value1, value2)
Console.WriteLine("Multiply({0},{1}) = {2}", value1, value2, result)
'Call the Divide service operation.
value1 = 22D
value2 = 7D
result = Client.Divide(value1, value2)
Console.WriteLine("Divide({0},{1}) = {2}", value1, value2, result)
' Step 3: Closing the client gracefully closes the connection and cleans up resources.
Client.Close()
Console.WriteLine()
Console.WriteLine("Press <ENTER> to terminate client.")
Console.ReadLine()
End Sub
End Module
using System;
using System.Collections.Generic;
using System.Text;
using System.ServiceModel;
namespace ServiceModelSamples
{
class Client
{
static void Main()
{
//Step 1: Create an endpoint address and an instance of the WCF Client.
CalculatorClient client = new CalculatorClient();
// Step 2: Call the service operations.
// Call the Add service operation.
double value1 = 100.00D;
double value2 = 15.99D;
double result = client.Add(value1, value2);
Console.WriteLine("Add({0},{1}) = {2}", value1, value2, result);
// Call the Subtract service operation.
value1 = 145.00D;
value2 = 76.54D;
result = client.Subtract(value1, value2);
Console.WriteLine("Subtract({0},{1}) = {2}", value1, value2, result);
// Call the Multiply service operation.
value1 = 9.00D;
value2 = 81.25D;
result = client.Multiply(value1, value2);
Console.WriteLine("Multiply({0},{1}) = {2}", value1, value2, result);
// Call the Divide service operation.
value1 = 22.00D;
value2 = 7.00D;
result = client.Divide(value1, value2);
Console.WriteLine("Divide({0},{1}) = {2}", value1, value2, result);
//Step 3: Closing the client gracefully closes the connection and cleans up resources.
client.Close();
Console.WriteLine();
Console.WriteLine("Press <ENTER> to terminate client.");
Console.ReadLine();
}
}
}
Перед тем как пытаться использовать клиент, убедитесь, что служба запущена. Дополнительные сведения см. в разделе Как размещать и запускать базовую службу Windows Communication Foundation.
Чтобы запустить клиент, щелкните правой кнопкой мыши пункт Client в окне Обозреватель решений и выберите пункты Отладка, Запустить новый экземпляр.
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.
Если на экране появляется этот текст, учебник успешно пройден. В этом образце показано, как настроить клиент WCF с помощью кода. Сведения по устранению неполадок см. в разделе Устранение неполадок, связанных с учебником по началу работы.
См. также
Задачи
Как создать клиент Windows Communication Foundation
Как создавать дуплексный контракт
Практическое руководство. Доступ к службам с дуплексным контрактом
Образец для начала работы
Резидентное размещение
Другие ресурсы
Построение клиентов
Учебник по началу работы
Базовое программирование WCF