Obrigado por visitar a devmedia.com.br!

Precisamos de você para divulgar nossos vídeos e cursos gratuitos para a comunidade.

Se você gosta da devmedia.com.br por favor dê-nos o seu clique para o Google+ e ajude outros desenvolvedores ao redor do mundo.



Obrigado por seu apoio!
Equipe DevMedia

sair sem compartilhar (x)
DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:

Host no Windows Communication Foundation

O WCF é uma arquitetura orientado a serviço, e para gerenciar esses serviços é necessários os host. Existem 3 tipo de hosts. Self-Hosting, IIS e WAS. Veremos uma introdução de cada um deles.

No artigo passado dei uma breve introdução do WCF de uma olhada. Como sabemos o WCF é uma arquitetura baseado em serviços, expondo esses serviços em protocolos.

Para trabalhamos com o WCF é necessário fazer referencia a uma namespace System.ServiceModel.dll, esse namespace contem toda a s classes necessárias , para sua implantação.

O Host gerencia a hospedagem da nossa aplicação WCF, podendo ser, Self-Hosting, IIS e WAS.

O Host pode será feito de duas formas, imperativa e declarativa.

A Imperativa é feita toda em código gerenciado, ou seja, C# ou VB.Net

A Declarativa é feita por um arquivo de configuração, um *.config .

Self-Hosting

O Self-Hosting é uma aplicação.exe, podendo ser um Windows Services, Windows Forms ou uma aplicação Console, ela expõe o serviço para ser consumido pelo cliente.

Para expor um serviço WCF é necessária a classe ServiceHost.

Essa classe possui vários overloads em seu construtor, em um deles é esperado um type, onde é informado o tipo da classe que representara o serviço, o próximo parâmetro, é informado o endereço onde será hospedado o nosso serviço, podendo ser um endereço HTTP ou TCP, veja um exemplo abaixo.

ServiceHost
host = new ServiceHost(typeof(WCF.Servico.Mensagem) , new Uri[]{new Uri("net.tcp://localhost:9090")})

Após configuramos nosso host é necessário configurar um EndPoint e adicionar ao nosso host , e para isso existe um método na classe Service chamado AddServiceEndpoint.

Em um dos overloads do método AddServiceEndpoint, é esperado um Contrato, um Binding e um Endereço.

//Contract, Binding, Address

host.AddServiceEndpoint(typeof(WCF.Contratos.IMensagem), new NetTcpBinding(), "Mensagem");


O endereço do EndPoint será combinado com o nosso protocolo, em tempo de execução

net.tcp://localhost:9090/Mensagem.

Para que os clientes possam ter informações do nosso serviço precisamos de um documento WSDL (metadados).

O Documento WSDL traz toda informação necessária para o meu cliente, quais operações meu serviço fornece, quais tipo de dados, quais os parâmetros são aceitos e o tipo de retorno para uma determina operação, características de segurança, transações que meu serviço suporta.

Essa informação (metadado) poderá ser exporto via HTTP-GET ou um EndPoint .

O WCF disponibiliza esses metadados automaticamente via HTTP-GET, mas para isso é necessário habilitar e adicionando um service behavior.

host.Description.Behaviors.Add(new ServiceMetadataBehavior() { HttpGetEnabled = true });


Para expor nosso Metadadados por HTTP-GET, precisamos de um protocolo HTTP e consecutivamente de um binding HTTP também.

Se quisermos expor nosso metadado por outro protocolo, um TCP por exemplo, precisamos adicionar por EndPoint para isso.

IIS

Alem dos Host-Self o WCF permite que o host, seja feito pelo IIS, muito parecido como os WebServices que já conhecemos.

O IIS em tempo de execução se encarrega de instanciar a classe ServiceHost e gerenciar o tempo de vida dessa classe.

Ele somente poderá será consumido pelo protocolo HTTP.

Para fazer um host via HTTP é necessário um arquivo com a extensão *.svc, quando é feita uma requisição via HTTP, ela é tratada por um modulo HTTPModule em conjunto com o HTTPHandler, que estão contido dentro do namespace System.ServiceModel.Activation.

O Arquivo *.svc tem uma diretiva ServiceHost a linguagem do código (C# ou VB.Net) o Service que representa a classe do serviço.

<%@ ServiceHost Language="C#" Debug="true" Service="Service"
CodeBehind="~/App_Code/Service.cs"
%>


Apos informarmos o nosso serviço precisamos informa o nosso EndPoint.

A configuração do EndPoint no host ISS é feita de forma declarativa e logo é configurado no arquivo web.config.

No EndPoint não é necessário o Address(endereço base), pois será a partir do arquivo *.svc.

WAS

O WAS é um novo recurso do Windows Vista e esta disponível somente a partir do IIS 7, alem protocolos HTTP, ele suporta também, protocolos TCP e MSMQ.

Bom esse foi mais artigo sobre WCF falando sobre host, espero que tenha gostado e até a próxima.

http:www.nandosilva.com




    0 COMENTÁRIO

[Fechar]

Este post é fechado - você precisa ter acesso ao post para incluir um comentário.


Nenhum comentário foi postado - seja o primeiro a comentar!



Autor
Fernando Rodrigues Da Silva

Formado em Sistema de Informação e pós graduado em Engenharia de Software pela FIT. Trabalha com a plataforma .NET há 6 anos, atualmente trabalha prestando serviço para a Volkswagen do Brasil.


Space do autor
Estatísticas #
Favorito:
Comentários:
Feedback:
Utilidade:
0   0
[Fechar]

Você precisa estar logado para dar um feedback.

Clique aqui para efetuar o login
[Fechar]
Este post está disponível somente para quem possui Créditos DevMedia. (Ele não está associado a nenhuma publicação DevMedia).


  Conheça os planos de créditos DevMedia e visualize esse post agora mesmo!

Plano conveniência – Neste plano este post custa R$ 0,00 (Compre agora)
Esse plano permite que você compre somente um post, pagando por ele seu preço sem desconto.

Plano ocasional: Aqui este post custa: R$ -1,00 (assinante) ou R$ -1,00 (não-assinante)
Este plano é ideal para quem tem interesse em mais de um post. Você compra um mínimo de R$ 50,00 em créditos e ganha, em média, 50% de desconto no preço do post. Compre Créditos agora!

Assinatura de Créditos (Plano econômico) – Aqui este post custa R$ -1,00
Este plano é ideal para quem tem interesse em muitos posts. Com esse plano você compra R$ 180,00 em créditos e ganha, em média, 80% de desconto no preço do post. Assine este plano agora!

> Saiba mais sobre o Sistema de Créditos DevMedia
web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2012 - Todos os Direitos Reservados a web-03