Revista MSDN Magazine Edição 15 - Execução do ASMX sem o IIS

Artigo Originalmente Publicado na MSDN Magazine Edição 15



Clique aqui para ler todos os artigos desta edição

 

Execução do ASMX sem o IIS

por Aaron Skonnard

Este artigo discute

Este artigo usa as seguintes tecnologias:

·HTTP no ASP.NET

·Web Services sem IIS

C#, HTTP

 

Download:

ServiceStation0412.exe (165KB)

Chapéu

Web Services

 

 

Quando o Microsoft® .NET Framework foi distribuído, introduziu uma estrutura de Web Services revolucionária conhecida como ASMX. A motivação por trás do projeto do ASMX era a máxima simplificação possível do processo de desenvolvimento de Web Services, para que até mesmo quem não fosse um especialista em XML pudesse criar um Web Service. O ASMX conseguiu isso ocultando a maior parte do XML básico e os detalhes básicos dos Web Services. Em vez de obrigar os desenvolvedores a lidar diretamente com envelopes SOAP e arquivos da Web Services Description Language (WSDL), o ASMX introduziu camadas de associação automática reduzindo a distância entre a codificação tradicional do .NET.

O ASMX também está intimamente integrado ao popular pipeline HTTP do ASP.NET. Assim, conta com os mesmos benefícios que os aplicativos Web tradicionais do ASP.NET , como um ambiente de hospedagem e modelo de processo sofisticados, opções robustas de configuração e implementação e pontos flexíveis de extensibilidade. Conseqüentemente, o ASMX é geralmente a primeira opção da maioria dos desenvolvedores de Web services. A maioria dos desenvolvedores supõe, incorretamente, que o ASMX exige o IIS; afinal, é o único exemplo de uso que já viram. Mas a verdade é que o ASMX não tem dependências técnicas do IIS, de forma alguma.

A necessidade de hospedar Web Services sem o IIS é bastante real. Em alguns ambientes pode não ser possível ter o IIS em execução no computador que tiver que hospedar o Web Service, por diversos motivos. Felizmente, você pode hospedar o ASMX em seu próprio processo, sem o IIS. Tornou-se possível fazer isso desde o lançamento da .NET Framework 1.0, mas era preciso fornecer seu próprio servidor Web para receber solicitações de HTTP. O Cassini é um exemplo de servidor Web desenvolvido pela equipe do ASP.NET, que atendia a essa necessidade e permitia a execução de páginas ASP sem o IIS. Contudo, criar no seu próprio servidor Web, ou usar um exemplo como o Cassini, não parece ser razoável para a maioria dos desenvolvedores.

Desde o lançamento do Windows Server¢ 2003 e do Windows® XP SP2, há uma nova pilha de protocolos HTTP disponível, chamada http.sys. Com a http.sys e algumas classes gerenciadas no .NET Framework 2.0 (especialmente a HttpListener), você pode construir facilmente um servidor Web diretamente no seu aplicativo, sem a necessidade do IIS na máquina. Esses avanços tornaram possível a execução do ASMX em qualquer lugar. Não se esqueça que o .NET Framework 2.0 está atualmente na versão Beta e, portanto, está sujeito a mudanças.

 

Arquitetura HTTP do ASP.NET

O ASP.NET foi projetado especificamente para evitar dependências no IIS. A arquitetura básica consiste de um pipeline de classes .NET que trabalham em conjunto, para processar as mensagens HTTP de entrada. É considerado um pipeline porque cada solicitação HTTP percorre uma seqüência de objetos, cada um executando algum processamento.

A classe HttpRuntime situa-se no início do pipeline e é responsável pelo início do processo. O pipeline inicia a execução quando o método estático ProcessRequest é chamado na classe HttpRuntime. O ProcessRequest toma um objeto HttpWorkerRequest, que contém todas as informações da solicitação atual. O HttpRuntime usa as informações do HttpWorkerRequest para preencher o objeto HttpContext. Depois instancia a classe HttpApplication apropriada, que invocará quaisquer implementações de  IHttpModule registradas no aplicativo, para pré/pós processamento. Neste ponto, a implementação apropriada de IHttpHandler é identificada, instanciada e invocada.

Esse processo ocorre para toda solicitação de HTTP que entrar no pipeline. Todos os recursos do ASP.NET (inclusive do ASMX) estão nas classes de pipeline. Por exemplo, o suporte para o processamento de endpoints do ASMX tem início quando a solicitação chega à classe System.Web.Services.Protocols.WebServiceHandlerFactory, que é responsável pela identificação, compilação (se necessário) e a instanciação da classe ASMX identificada, assim como a invocação do WebMethod destinado pela mensagem SOAP de entrada.

 

" [...] continue lendo...

Ebook exclusivo
Dê um upgrade no início da sua jornada. Crie sua conta grátis e baixe o e-book

Artigos relacionados