Desenvolvimento - C#

Explorando o IIS 7.0

O IIS (Internet Information Services) 7.0 completa 10 anos onde se consolida como o principal servidor web da atualidade sendo distribuído com o Windows Server 2008 e Windows Vista SP1.

por Ramon Durães



Introdução
O IIS (Internet Information Services) 7.0 completa 10 anos onde se consolida como o principal servidor web da atualidade sendo distribuído com o Windows Server 2008 e Windows Vista SP1. Para os desenvolvedores ASP.NET o IIS é o grande parceiro responsável pela distribuição das aplicações na Web. Desde a versão 6.0 foram feitos grandes investimentos em segurança tornando a infra estrutura muito segurara reduzindo a zero o número de hotfix relacionados .

Novidades
Com o IIS 7.0 muitas mudanças foram feitas em seu núcleo com a criação de uma estrutura modular permitindo limitar a área de superfície só rodando os pacotes necessários a sua aplicação e abrindo a possibilidade para que você possa ampliar os recursos originais adicionando novas funcionalidades. Você tem a disposição mais de 44 módulos que podem ser adicionados ou removidos a qualquer momento.

Antes no IIS 6.0 as requisições processavam de forma separada no IIS e no ASP.NET pois o comportava-se como uma espécie de plugin conforme a figura 01 dificultando a utilização dos poderosos recursos do ASP.NET para outras aplicações. Agora com o IIS 7.0 o ASP.NET está integrado e já responde diretamente pelas requisições conforme a figura 02 possibilitando a interceptação das requisições trabalhando de forma integrada.

fig02.png
Figura 01 – Estrutura do IIS 6.0


fig03.png
Figura 02 – Estrutura do IIS 7.0

O IIS agora conta também com vários caminhos para que possamos efetuar sua configuração desde o novo console até usando código .net conforme os exemplos:
- IIS Manager
- Scripting
- WMI
- Microsoft.Web.Administration (.NET)
- AppCmd.exe

Instalando o IIS no Windows Vista
Para instalar o IIS você precisar ir ao painel de controle, programas, Ativar ou desativar recursos do Windows ou ir ao iniciar e digitar: optionalfeatures conforme a figura 03.



Figura 03 – Ativar ou desativar recursos do Windows.

Escolhendo uma das opções citadas acima vai carregar a figura 04 onde você deve escolher a opção Serviços de Informações da Internet e ativar a ferramenta de gerenciamento e os serviços da World Wide Web.

figura04.png
Figura 04 – Instalando IIS.

Você precisar ativar o suporte ao ASP.NET dentro da opção Recursos para Desenvolvimento de Aplicativos conforme a figura 05.

figura05.png
Figura 05 – Instalando o ASP.NET.

Gerenciador de Serviços de Informações da Internet (IIS)
O novo console de gerenciamento foi também completamente reestruturado com uma interface mais amigável que também suporta novos componentes desenvolvidos em  .NET. Para uma visão geral do mesmo confira  agora a figura 06.

figura06.png
Figura 06 – Gerenciando o IIS.

Inserindo certificado SSL (Secure Sockets Layer)
Uma característica bastante interessante no IIS 7.0 é a possibilidade de se criar no mesmo certificados de teste para testar seu site usando SSL. A mesma interface foi bastante simplificada para a implementação e configuração dos certificados conforme a figura 07.

figura07.png
Figura 07 – Criando um certificado SSL.

Clique no ícone certificados de servidor e depois na aba ações você vai ter um conjunto de opções que vão desde importação de um certificado, solicitação de um e a opção que usaremos no momento que é criar um certificado para testes conforme a figura 08.

figura08.png
Figura 08 – Criando certificando SSL pra teste

Após definir um nome teremos o mesmo criado conforme a figura 09.
figura09.png
Figura 09 – Certificados de Servidor.

Agora chegou o momento de utilizar o seu certificado. Para isso clique no seu web site que para esse exemplo será o Default Web Site e depois escolha em Ações a opção Ligações conforme a figura 10.

figura10.png
Figura 10 – Definindo certificado para um site.

Ao carregar clique na opção adicionar onde deverá escolher um certificado dentre os cadastrados conforme a figura 11.

figura11.pngFigura 11 – Definindo o certificado ‘Artigo’ para o Default Web Site.

Agora que você definiu seu certificado de teste para esse web site é só testar pelo internet Explorer usando o HTTPS. Vale lembrar que esse certificado é apenas para testes e o IE exibe um alerta quando você estive usando o mesmo, bastando ignorar e continuar conforme a figura 12.

figura12.png
Figura 12 – Acessando o site usando SSL.

Mais recursos para todas as aplicações
Agora você pode usar os recursos do ASP.NET como autenticação, autorização, cachê para todas as aplicações. As informações de configuração do servidor ficam salvas dentro do já conhecido arquivo web.config conforme a figura 13 facilitando a sua distribuição entre os servidores web farms.

figura13.png
Figura 13 – Salvando configurações do IIS no web.config.

Explorando potencial do IIS e .NET integrado.
Para demonstrar o potencial do novo IIS vamos usar um modulo construído para impedir uma situação comum hoje em dia que é a utilização de imagens de terceiros hospedas em outro hosting e que traz muitos problemas de trafego . Imagina que você viu alguma imagem em um site e deseja usa em seu blog. Você copiar a referencia da mesma e cola. Toda vez que alguém abrir seu blog vai ver a figura mas a mesma está hospedada em outro local resultando em consumo de largura de banda.

Agora nós podemos usar o novo IIS integrado com um modulo em .NET para gerenciar o carregamento dessas figuras retornando por exemplo um erro para quem tentar fazer esse hotlink ou uma outra figura de alerta.

O Mike Volodarsky criou um exemplo muito interessante que pode ser baixado para utilização.

Ao descompactar o arquivo você vai ter uma DLL com o nome de LeechGuard.dll que deve ser copiada para a pasta \Bin da sua aplicação. Depois é só configurar o Web.Config na pasta de sua aplicação para ativar o modulo conforme a figura 14.

figura14.png
Figura 14 – Ativando modulo para proteger imagens.

Feito isso é só rodar nossa aplicação que conforme a configuração qualquer solicitação de arquivo gif / jpg que seja feita por uma url externa que não a do localhost ele vai retornar outra figura que para o nosso caso utilizaremos a figura pirate.gif.

Conforme a figura 15 a nossa aplicação apenas tem as figuras, o web.config e a pasta Bin com a DLL.

figura15.png
Figura 15 –
Protegendo imagens usando o IIS 7.0

Agora é só acessar pelo internet Explorer a sua aplicação que para o nosso caso está no IIS na pasta Origem ficando com a seguinte url http://localhost/origem/figura.jpg conforme a figura 16.

figura16.png
Figura 16 – Acessando uma figura

Agora quem tentar acessar essa mesma figura colocando link em seu site vai ter como resultado o exemplo que simulamos na figura 17.

figura17.png
Figura 17 – Impedindo a cópia da figura

Conforme você observou com o novo IIS o potencial de funcionalidades que você pode criar é realmente gigantesco e vai depender de sua criatividade usando .NET.

Para facilitar esse exemplo eu adicionei um novo identificador de host no Windows para usarmos no lugar da url LocalHost e simular um terceiro acessando o site.

O processo é muito simples, basta editar o arquivo C:\Windows\System32\drivers\etc\hosts adicionando a entrada ‘demo’ conforme a figura 18.

figura18.png
Figura 18 – Editando arquivo hosts

Considerações finais
O IIS 7.0 oferece para o desenvolvedor web uma nova plataforma totalmente reestruturada e adaptável as suas necessidades consolidando o mesmo como principal plataforma para hospedagem de aplicações web. Com a criação de novos módulos você pode sempre que necessário ampliar os recursos e criar novas funcionalidades conforme as necessidades de negócio.


Referências:
http://dotnetwizard.net/vista-stuff/how-to-run-aspnet-v11-on-iis7-use-visual-studio-2003-on-vista/
http://learn.iis.net/page.aspx/121/iis-7-modules-overview
http://weblogs.asp.net/scottgu/archive/2006/09/19/Tip_2F00_Trick_3A00_-Using-IIS7-on-Vista-with-VS-2005.aspx
http://learn.iis.net/page.aspx/365/installing-necessary-iis7-components-on-windows-vista/
http://msdn.microsoft.com/pt-br/magazine/cc163453.aspx

Ramon Durães

Ramon Durães - Especialista em desenvolvimento de software e Microsoft Most Valuable Professional (MVP) em Visual Studio Team System. Realiza treinamentos de .NET Framework em empresas, consultoria em arquitetura de software e implantação de Visual Studio Team System. Palestrante nos principais eventos da Microsoft no Brasil (Tech-Ed 2005, Tech-Ed 2006, Tech-Ed 2007, Tech-Ed 2008, Tech-ED 2009), Microsoft Innovation Days 2007 (Salvador, Brasília, Recife, Goiânia, Natal, Maringá), Microsoft Innovation Days 2009 (Salvador) , Campus Party Brasil 2009 e eventos regionais relacionados a grupos de usuários e universidades. Conhecido autor de artigos para os principais portais de conteúdo e autor de 10 publicações eletrônicas em CD (Video-Aula) pela editora Linha de Código além dos livros "Desenvolvendo para web usando o Visual Studio 2008" e "Gerenciando projetos de software usando Visual Studio Team System" pela editora Brasport. Pode ser encontrado em seu blog http://www.ramonduraes.net e @ramonduraes no Twitter.