WCF - Consuming WCF Service
Os serviços WCF permitem que outros aplicativos os acessem ou os consumam. Um serviço WCF pode ser consumido de várias maneiras, dependendo do tipo de hospedagem. Aqui, estamos explicando o método passo a passo para consumir um serviço WCF para cada uma das seguintes opções de hospedagem populares -
- Consumindo serviço WCF hospedado no IIS 5/6
- Consumir serviço WCF que é auto-hospedado
- Consumindo serviço WCF hospedado no Windows Activation Service
- Consumindo serviço WCF hospedado no serviço Windows
Consumindo serviço WCF hospedado no IIS 5/6
O processo de consumo de um serviço WCF hospedado no IIS 5/6 é discutido em detalhes abaixo. Além disso, a discussão inclui como criar aplicativos de proxy e console.
Step 1- Uma vez que um serviço é hospedado no IIS, temos que consumi-lo nos aplicativos clientes. Antes de criar o aplicativo cliente, precisamos criar um proxy para o serviço. Este proxy é usado pelo aplicativo cliente para interagir com o serviço. Para criar um proxy, execute o prompt de comando do Visual Studio 2008. Usando o utilitário de serviço, podemos criar a classe de proxy e suas informações de configuração.
svcutilhttp: //localhost/IISHostedService/Service.svc
Após executar este comando, obteremos dois arquivos gerados no local padrão.
MyService.cs - Classe proxy para o serviço WCF
output.config - Informações de configuração sobre o serviço
Step 2 - Agora, vamos começar a criar o aplicativo Console usando o Visual Studio 2008 (aplicativo cliente).
Step 3- Adicione a referência 'System.ServiceModel'; esta é a dll principal do WCF.
Step 4 - Crie uma classe Proxy.
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();
}
}
}
A saída aparece da seguinte forma -
Consumindo serviço WCF auto-hospedado
Aqui, todo o processo de consumo de um serviço WCF auto-hospedado é explicado passo a passo junto com uma ampla codificação e capturas de tela sempre que necessário.
Step 1- O serviço está hospedado, agora precisamos implementar a classe proxy para o cliente. Existem diferentes maneiras de criar o proxy.
Usando SvcUtil.exe, podemos criar a classe de proxy e seu arquivo de configuração com pontos de extremidade.
Adicionando referência de serviço ao aplicativo cliente.
Implementando ClientBase <T> classe
Desses três métodos, Implementing ClientBase <T> é a prática recomendada. Se você estiver usando os outros dois métodos, precisaremos criar uma classe de proxy sempre que fizermos qualquer alteração na implementação do Serviço. Mas este não é o caso de ClientBase <T>. Ele criará o proxy apenas em tempo de execução e, portanto, cuidará de tudo.
Para isso, crie uma classe de proxy, que inclui as referências de System.ServiceModel e 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);
}
}
}
Agora, crie um aplicativo de console, que inclui as referências de System.ServiceModel e 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();
}
}
}
Step 2 - As informações do endpoint (igual ao serviço) devem ser adicionadas ao arquivo de configuração do aplicativo cliente.
<?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>
Step 3- Antes de executar o aplicativo cliente, você precisa executar o serviço. Abaixo, é mostrado o resultado do aplicativo cliente.
Consumir serviço WCF hospedado no WAS
Consumir um serviço WCF hospedado no WAS é um processo simples que envolve apenas algumas etapas. As etapas são as seguintes -
- Adicione a classe de proxy e o arquivo de configuração ao aplicativo cliente.
- Crie o objeto para o MathServiceClient e chame o método.
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();
}
}
}
A saída aparece conforme mostrado abaixo.
Consumindo serviço WCF hospedado no serviço Windows
O processo passo a passo de como consumir um serviço WCF hospedado no Windows Service é expresso abaixo em detalhes com codificação e instruções.
Uma vez hospedado com sucesso, podemos criar uma classe proxy para o serviço e começar a usar no aplicativo cliente. Aqui, ele é mostrado com o tipo de hospedagem IIS consumindo.
Adicione a referência de 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();
}
}
}
A saída aparece da seguinte forma -