Criando um provedor de serviços selfhost no WCF

No último artigo (Introdução ao WCF) conhecemos a estrutura básica de um serviço WCF. Hoje apresentaremos como criar uma biblioteca de serviços. Concomitantemente, demonstraremos como se dá essa estrutura no código do projeto.

 

CRIANDO O PROJETO

Vamos lá! Abra o Visual Studio (Estou usando a versão 2010), e crie um novo projeto do tipo WCF Service Library (Ver imagem1). Escolhemos esse tipo uma vez que nossa intensão é criar um provedor de serviços do tipo Selfhost. Ou seja, nosso projeto se responsabilizará pelo início e manutenção das instancias dos serviços.

 

Imagem1 . ( Criando um novo projeto do tipo WCF Service Library )

 

O nosso projeto se chamará de WCFServidorDeArquivoLIB, mas fique a vontade para nomeá-lo como quiser. Após o projeto criado ele apresentará a seguinte estrutura:

 

Imagem2. Estrutura do template gerado na criação de um projeto

 

O VS cria, por padrão, um template de um Serviço WCF (ver imagem2). Na prática ele cria um projeto (no nosso caso uma biblioteca) onde existe uma referência a System.ServiceModel, são criados os arquivos App.confi , IService1.cs e Service1.cs. Inicialmente vamos usar esse template como base para compreender como são distribuídos os endereços , contratos  e configurações do serviço.


ABC, ABC...

Como já dito em nosso último artigo, um serviço WCF expõe para o mundo um ServiceEndPoint. Este é composto por uma ENDEREÇO, LIGAÇÃO (preciso de uma tradução melhor para BINDING) e um CONTRATO. Olhando para o template gerado pelo Visual Studio identificamos esses elementos da seguinte forma:

 

O CONTRATO

Vamos começar pelo contrato. Fazendo assim entenderemos melhor os outros elementos. Os contratos são interfaces do nosso serviço. Para que esta interface seja exposta é necessário decora-la com um atributo [ServiceContrat]. Você também pode escolher quais métodos do contrato serão visíveis no serviço. Para isso, decoramos o método com o atributo [OperationContract]. No nosso fonte nosso contrato é a interface IService1 (ver imagem3).

 

Imagem3. Interface de contrato

 

É importante ressaltar que um método do serviço poder retornar uma classe, o que pode ser visto no método GetDataUsingDataContract que retorna uma classe CompositeType, bem como a recebe como parâmetro.  Abaixo temos a implementação deste contrato na classe Service1(Imagem4).

 

Imagem4. Implementação do contrato

 

O ADDRESS

Encontra-se no arquivo App.config (ver imagem5). Neste arquivo estão gravadas algumas configurações importantes para se expor um serviço. Esta configuração também pode ser feita diretamente no fonte (o que será explicado em outros artigos).

 

Image5. Configuração da url do serviço

 

Perceba que a URL Faz referência a classe de serviço Service1. É importante observar a tege <service name="WCFServidorDeArquivoLIB.Service1">, Onde explicitamos em que classe do projeto encontra-se a implementação de nosso serviço.

 

O BINDING (LIGAÇÃO)

 

Por último (e talvez o mais complexo) o Binding. A configuração do Binding é responsável pela forma como seu serviço será exposto. Ou seja, se ele ira rodar em uma intranet, se ele terá segurança de transporte ou de mensagem, qual o tamanho do pacote da mensagem etc. São inúmeras as possibilidades de configurações. Tudo vai depender do contexto do serviço. Existe uma lista extensa de Bindings e cada um dá suporte a um contexto específico. Logo abaixo segue uma lista de bindings:

 

basicHttpBinding, wsHttpBinding, wsDualHttpBinding, webHttpBinding, wsFederationHttpBinding, netTCPBinding, netNamedPipeBinding, netMSMQBinding, netPeerTCPBinding, msmqIntegrationBinding, basicHttpContextBinding, netTCPContextBinding, wsHttpContextBinding.

 

Veja em seguida (ver Imagem6) como é configurado este binding no arquivo App.config. Lembramos que construiremos no fonte essas configurações, no entanto compreender a estrutura deste arquivo de configuração será importante em outros contextos.

 

Imagem6. Configuração do Binding

 

CONCLUSÃO

Bem agora que compreendemos se dá a estrutura do serviço WCF poderemos desenvolver nossa a aplicação, o que faremos no próximo post. Lembramos que este tópico será ampliado com a continuidade das demais partes. Recomendamos que você expanda o seu conhecimento na arquitetura de serviços através de leituras mais abrangentes para aprofundar os assuntos aqui abordados.

para saber mais acesse:

http://www.c-sharpcorner.com/UploadFile/dhananjaycoder/abcendpoint0...

http://www.israelaece.com/

Não gostou do modelo ou tem alguma idéia melhor? Não perca tempo, participe, comente este artigo e diga sua opinião.

Aprofunde seus conhecimentos sobre este tema na comunidade C#


Exibições: 118

Comentar

Você precisa ser um membro de DevBrasil para adicionar comentários!

Entrar em DevBrasil

© 2019   Criado por Ramon Durães.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço