Службы WCF позволяют другим приложениям получать доступ или использовать их. Служба WCF может использоваться многими способами в зависимости от типа хостинга. Здесь мы объясняем пошаговый метод использования службы WCF для каждого из следующих популярных вариантов хостинга:
- Использование службы WCF, размещенной в IIS 5/6
- Использование службы WCF, которая размещается самостоятельно
- Использование службы WCF, размещенной в службе активации Windows
- Использование службы WCF, размещенной в службе Windows
Использование службы WCF, размещенной в IIS 5/6
Процесс использования службы WCF, размещенной в IIS 5/6, подробно обсуждается ниже. Кроме того, обсуждение включает в себя, как создавать прокси и консольные приложения.
Шаг 1. После размещения службы в IIS мы должны использовать ее в клиентских приложениях. Перед созданием клиентского приложения нам нужно создать прокси для сервиса. Этот прокси используется клиентским приложением для взаимодействия со службой. Чтобы создать прокси, запустите командную строку Visual Studio 2008. Используя служебную утилиту, мы можем создать прокси-класс и информацию о его конфигурации.
svcutilhttp: //localhost/IISHostedService/Service.svc
После выполнения этой команды мы получим два файла, сгенерированных в расположении по умолчанию.
-
MyService.cs — прокси-класс для службы WCF
-
output.config — информация о конфигурации службы
MyService.cs — прокси-класс для службы WCF
output.config — информация о конфигурации службы
Шаг 2. Теперь мы начнем создавать консольное приложение с использованием Visual Studio 2008 (клиентское приложение).
Шаг 3 — Добавьте ссылку «System.ServiceModel»; это основная библиотека для WCF.
Шаг 4 — Создайте прокси-класс.
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace MyServiceClient { Class Program { Static void Main(string[] args) { // Creating Proxy for the MyService ServiceClient Client = newServiceClient(); Console.WriteLine("Client calling the service..."); Console.WriteLine("Hello Ram"); Console.Read(); } } }
Вывод выглядит следующим образом —
Использование автономного сервиса WCF
Здесь шаг за шагом объясняется весь процесс использования службы WCF, размещенной самостоятельно, наряду с достаточным кодированием и снимками экрана, где это необходимо.
Шаг 1 — Сервис размещен, теперь нам нужно реализовать прокси-класс для клиента. Существуют разные способы создания прокси.
-
Используя SvcUtil.exe, мы можем создать прокси-класс и его конфигурационный файл с конечными точками.
-
Добавление сервисной ссылки на клиентское приложение.
-
Реализация класса ClientBase <T>
Используя SvcUtil.exe, мы можем создать прокси-класс и его конфигурационный файл с конечными точками.
Добавление сервисной ссылки на клиентское приложение.
Реализация класса ClientBase <T>
Из этих трех методов наилучшей практикой является реализация ClientBase <T>. Если вы используете два других метода, нам нужно создавать прокси-класс каждый раз, когда мы вносим какие-либо изменения в реализацию Сервиса. Но это не относится к ClientBase <T>. Он создаст прокси только во время выполнения и позаботится обо всем.
Для этого создайте один прокси-класс, который включает ссылки System.ServiceModel и MyCalculatorService.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.ServiceModel; using MyCalculatorService; namespace MyCalculatorServiceProxy { // WCF create proxy for ISimpleCalculator using ClientBase Public class MyCalculatorServiceProxy : ClientBase<ISimpleCalculator>, ISimpleCalculator { Public int Add(int num1, int num2) { //Call base to do funtion returnbase.Channel.Add(num1, num2); } } }
Теперь создайте одно консольное приложение, которое включает ссылки System.ServiceModel и MyCalculatorServiceProxy.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.ServiceModel; using MyCalculatorServiceProxy; namespace MyCalculatorServiceClient { classProgram { Static void Main(string[] args) { MyCalculatorServiceProxy.MyCalculatorServiceProxy proxy = newMyCalculatorServiceProxy.MyCalculatorServiceProxy(); Console.WriteLine("Client is running at " + DateTime.Now.ToString()); Console.WriteLine("Sum of two numbers. 5 + 5 =" + proxy.Add(5,5)); Console.ReadLine(); } } }
Шаг 2 — Информация о конечной точке (такая же, как у сервиса) должна быть добавлена в файл конфигурации клиентского приложения.
<?xmlversion = "1.0"encoding = "utf-8" ?> <configuration> <system.serviceModel> <client> <endpoint address ="http://localhost:8090/MyCalculatorServiceProxy/ISimpleCalculator" binding = "wsHttpBinding" contract "MyCalculatorServiceProxy.ISimpleCalculator"> </endpoint> </client> </system.serviceModel> </configuration>
Шаг 3 — Перед запуском клиентского приложения необходимо запустить службу. Ниже показан вывод клиентского приложения.
Использование службы WCF, размещенной в WAS
Использование службы WCF, размещенной в WAS, — это простой процесс, включающий всего несколько шагов. Шаги следующие:
- Добавьте прокси-класс и файл конфигурации в клиентское приложение.
- Создайте объект для MathServiceClient и вызовите метод.
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespaceWASHostedClient { classProgram { staticvoid Main(string[] args) { MathServiceClient client = newMathServiceClient(); Console.WriteLine("Sum of two number 5,6"); Console.WriteLine(client.Add(5, 6)); Console.ReadLine(); } } }
Вывод выглядит так, как показано ниже.
Использование службы WCF, размещенной в службе Windows
Пошаговый процесс использования службы WCF, размещенной в службе Windows, подробно описан ниже с помощью кодирования и инструкций.
После успешного размещения мы можем создать прокси-класс для службы и начать использовать его в клиентском приложении. Здесь это показано с использованием типа хостинга IIS.
Добавьте ссылку на ServiceModel.
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespaceWindowServiceClient { classProgram { staticvoid Main(string[] args) { //Creating Proxy for the MyService MyServiceClient client = newMyServiceClient(); Console.WriteLine("Client calling the service..."); Console.WriteLine("Sum of two numbers 5,6"); Console.WriteLine(client.Add(5, 6)); Console.WriteLine("Subtraction of two numbers 6,5"); Console.WriteLine(client.Sub(6, 5)); Console.WriteLine("Multiplication of two numbers 6,5"); Console.WriteLine(client.Mul(6, 5)); Console.WriteLine("Division of two numbers 6,3"); Console.WriteLine(client.Div(6, 3)); Console.Read(); } } }
Вывод выглядит следующим образом —