Avançando com WCF - Revista Easy Net 16
Este artigo continua falando sobre o desenvolvimento de aplicações WCF, iniciado na edição anterior, que são a plataforma para distribuição de software como serviços criada pela Microsoft como um aperfeiçoamento aos Web Services.
Artigos Avançando com WCF - Revista Easy Net 16
Este artigo continua falando sobre o desenvolvimento de aplicações WCF, iniciadoar na edição anterior, que são a plataforma para distribuição de software como serviços criada pela Microsoft como um aperfeiçoamento aos Web Services. No texto será dada continuação ao desenvolvimento deste tipo de aplicação e será dado foco às tarefas de publicação usando o IIS e também a utilização de arquivos de configuração para ajustar tanto o serviço como a aplicação cliente.
Os conceitos apresentados procuram ajudar o desenvolvedor a criar, publicar e configurar aplicações que usam o WCF.
Avançando com WCF
Software como provedor de serviços é uma tendência de mercado. Basta seguir alguns blogs sobre software corporativo e constatar isto. O WCF permite muitos desdobramentos e grande flexibilidade para criar este tipo de software. Um aspecto delicado é a publicação destes para serem consumidos por outros usuários e seus sistemas. A utilização do IIS neste caso não é muito intuitiva como nos Web Services. A configuração também é um aspecto que merece atenção e que pode representar alguma complicação. Nada que uma boa introdução aos recursos do Framework .Net não resolva.
A grande sacada dos Web Services e do WCF foi possibilitar distribuir o processamento entre computadores separados fisicamente de uma maneira relativamente simples. Qualquer programador que tenha estudado sistemas distribuídos precisou aprender a criar sockets e entender o funcionamento das camadas de rede. Isso sinceramente não é nada fácil, uma vez que muitos problemas precisam ser resolvidos.
A estrutura fornecida pelo WCF, assim como todas do Framework .Net, busca providenciar todos os recursos para o desenvolvedor focar ao máximo na funcionalidade que quer criar e não se preocupar (tanto) com os problemas citados anteriormente.
Boa parte destes recursos está concentrada na forma como altera o comportamento do serviço através das configurações. É possível fazer toda a configuração dos endpoints e do host dentro do código escrito em C#, mas é melhor que isto seja feito através de arquivos de configuração, como nos outros tipos de aplicação do Framework .Net. Estes arquivos já são conhecidos para quem desenvolve projetos Web e Windows e sua estrutura não difere muito nos WCF.
A configuração da aplicação cliente que é a que irá acessar o serviço, também pode ser feita com o uso dos arquivos. Desta forma este tipo de aplicação pode fazer alterações como mudança do endereço do serviço e alguns detalhes do seu acesso sem precisar sofrer nenhuma modificação no seu código.
Também é oferecido para o desenvolvedor uma forma facilitada para hospedar os serviços dentro da infraestrutura oferecida pelo IIS (Internet Information Service) que é o gerenciador padrão dos sistemas Windows para hospedagem de páginas e aplicativos Web.
A hospedagem do WCF no IIS não é tão intuitiva, mas com um pouco de esforço os resultados são satisfatórios. Sempre que se escreve sobre o Framework .Net existe uma tendência de superestimar suas vantagens. Em um primeiro momento, a tendência é achar que tudo deve ser muito simples e rápido, e depois que se conhece um pouco mais da sua arquitetura, tudo acaba ficando assim mesmo, mas primeiro é importante se aprofundar em alguns aspectos.
A arquitetura do WCF
Desde a versão 2.0 do Framework .Net, a base para desenvolvimento de serviços continua a mesma, ou seja, as classes principais são desta versão.
As novidades como WCF, WPF (Windows Presentation Foundation, uma nova plataforma para o desenvolvimento de aplicações desktop), LINQ (Language Integrated Query, uma linguagem de consultas integrada com as linguagens do Framework como VB e C#), são acréscimos feitos a partir das novas versões. O WCF, por exemplo, está embutido na versão 3.0. A Figura 1 dá uma ideia desta arquitetura.
Figura 1. WCF e o Framework
Isto significa que para ativar estes tipos de aplicação, se deve instalar a versão correta do Framework. Um detalhe importante é que as versões Windows 7 para o desktop e Windows 2008 para o servidor já estão com as versões necessárias instaladas. Outro ponto a considerar é que ao instalar a versão 3.5 a 2.0 já é instalada por padrão.
É sempre bom lembrar que as pastas do Framework .Net estão tipicamente em c:\windows\Microsoft.Net. A Figura 2 demonstra uma estrutura destas no Windows 7.
Figura 2. Pastas do Framework
Observe que as versões 1.0, 1.1 e 2.0 também são instaladas para manter compatibilidade. Sabendo desta arquitetura, ao fazer a hospedagem do WCF no IIS, a configuração da aplicação ficará um pouco mais fácil de entender principalmente quando se estiver configurando o pool de aplicações que é como o IIS faz o gerenciamento destas. Em alguns casos, como o WCF, é indicado usar o Classic App que usa a versão 2.0 como base.
Nota: é bom verificar a versão do Windows que está instalada. Algumas versões mais básicas, apesar de terem as versões do Framework, podem não ter algumas ferramentas como o IIS instaladas por padrão.
Usando o IIS para hospedar o serviço
O IIS está presente em quase todas as versões do Windows, mesmo as Desktop. Atualmente na versão 7 que vem por padrão no Server 2008 e no Windows 7 (a partir da Professional), é a maneira mais indicada para hospedar serviços WCF.
O seu acesso pode ser feito de diversas maneiras sendo as mais simples através das ferramentas administrativas, digitando "IIS" no menu iniciar (Figura 3) ou através da opção "Executar" do menu iniciar do Windows digitando "inetmgr".
Figura 3. Acessando o IIS
Se o mesmo não estiver instalado, é fácil fazer isto através da opção Adicionar Programas do painel de controle do Windows. Nesta tela, deve se abrir a ferramenta para habilitar ou desabilitar recursos do Windows (Figura 4).
Figura 4. Instalando o IIS
Estes passos foram elaborados a partir do Windows 7, mas devem funcionar com a versão do servidor também. Lembre-se de que será necessário ter permissões do usuário Administrador. Se estiver configurando o IIS, após instalar, não é necessário reiniciar o computador, apenas alguns passos adicionais precisam ser dados. Entre estes deve se instalar o ASP.NET no IIS. Isto é feito no prompt de comandos (aberto como administrador) na pasta c:\windows\microsoft.net\Framework\v2.0.50727 com o comando:
> aspnet_regiis –i
Após isto, outro passo também deve ser feito ainda no prompt, porém agora na pasta da versão 3,0 c:\Windows\Microsoft.NET\Framework\v3.0\Windows Communication Foundation executando o comando:
> ServiceModelReg.exe –i
Normalmente isto é necessário em máquinas desktop principalmente onde se fez uma instalação manual do Framework .Net ou do Visual Studio.
Novamente não é necessário reiniciar o Windows, apenas o IIS que pode ser feito no próprio prompt de comandos na pasta c:\windows\system32 através do comando:
> iisrest –restart
Ou na própria interface do IIS.
Nota: estes passos se aplicam em versões de 32 bits do Windows e algumas pastas estão localizadas em lugares diferentes nas versões de 64 bits. É bom observar este detalhe se for fazer configurações do IIS e do Windows.