Arquitecturas de extensão do Arquitecturas de extensão do servidor HTTP servidor HTTP CGI | ISAPI : ASP, ASP.NET CGI | ISAPI : ASP, ASP.NET Programação na Internet Secção de Programação ISEL-DEETC-LEIC Luis Falcão - [email protected]Nuno Datia – [email protected]
24
Embed
Arquitecturas de extensão do servidor HTTP CGI | ISAPI : ASP, ASP.NET Programação na Internet Secção de Programação ISEL-DEETC-LEIC Luis Falcão - [email protected].
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Arquitecturas de extensão doArquitecturas de extensão doservidor HTTPservidor HTTP
• A interface CGI (Common Gateway Interface)– Interface standard de extensão do servidor Web– Suportada pela maioria dos servidores Web– Define a interface que as aplicações devem cumprir por forma a estenderem o
comportamento do servidor Web
• Associação de comportamento a URLs (Geração dinâmica de páginas)
– Podem ser desenvolvidas em qualquer linguagem que ofereça suporte para acesso a variáveis de ambiente, ao standard input e ao standard output
• Alternativas à interface CGI– Soluções Microsoft: A interface ISAPI: ASP, ASP.NET– Soluções Sun: Servlets; JSP; JSF– Outras: PHP
class V1 { public static void ProcessRequest() { string content = @"<html> <head><title>title>CGI livro de convidados escrito em C++</title></head> <body>Olá, sou um CGI gerado pela versão 2.</body> </html>"; // Escrever os headers System.Console.WriteLine("HTTP/1.1 200 OK"); System.Console.WriteLine("Content-Type: text/html"); System.Console.WriteLine(string.Format("Content-Length: {0}", content.Length)); System.Console.WriteLine();
// Escrever o conteúdo System.Console.WriteLine(content); }}
• As extensões ISAPI são uma tecnologia do lado do servidor que, juntamente com o CGI, foram das primeiras tecnologias a permitir gerar conteúdos dinâmicos como resposta a pedidos
• Esta tecnologia visa resolver um dos problemas existentes no CGI – Um processo por pedido, que não é reutilizado
• Com ISAPI é diferente: uma vez carregada, esta fica em memória.
• A arquitectura natural de expansão do IIS baseia-se na interface ISAPI (Internet Services API)– Carregamento dinâmico de código recorrendo a dlls
• A interface ISAPI é composta por: – Funções definidas e exportadas pela dll e invocadas pelo IIS– Estruturas de dados para troca de informação entre IIS e dll– Callbacks fornecidos pelo IIS para invocação na dll
• Prevê duas formas de extensão do comportamento do IIS– ISAPI Extensions - Permitem definir novos endpoints para atendimento
de pedidos– ISAPI Filters - Permitem interceptar e alterar o conteúdo das streams de
• Definem novos endpoints para tratamento de pedidos (no contexto do IIS)
– Através de associações entre extensão do URL e ISAPI que é responsável pelo tratamento do pedido (ver associações no IIS)
• Passos do IIS no atendimento do pedido (se existir associação)
1. Carrega a dll (caso não esteja carregada) e invoca a função GetExtensionVersion permitindo à dll o registo da sua versão
2. Preenche uma instância de EXTENSION_CONTROL_BLOCK com a informação relativa ao pedido e as funções de callback a utilizar pela dll (por exemplo: WriteClient e ReadClient)
3. Entrega o atendimento do pedido à dll invocando a função HttpExtensionProc passando-lhe a estrutura de dados anterior
• Tecnologia Microsoft para o desenvolvimento da camada de UI de aplicações Web (identificada pelas extensões *.asp e *.asa)
• Uma ASP é composta pelo template de apresentação (definido em HTML) e script a ser interpretado no servidor
• Os seguintes objectos são fornecidos implicitamente pelo ambiente de execução da página (objectos intrínsecos)
– Request – contém informação relativa ao pedido– Response – permite manipular a resposta– Session – armazenamento de estado associado ao utilizador– Application – para partilha de estado entre todos os utilizadores da aplicação– Server – permite obter informação relativa ao servidor Web
• É suportada na extensão ISAPI implementada em "asp.dll"
Main ProcessMain Process Pooled ProcessPooled Process Isolated ProcessIsolated Process
Isolated Isolated ApplicationApplication......
App 1App 1
App nApp n......
App 1App 1
App nApp n
• Modos de isolamento de aplicações Web
– Low (Main Process): Executada no processo principal do IIS
– Medium (Pooled Process): Executada num processo secundário partilhado• Todas as aplicações com este nível de isolamento são hospedadas neste processo
– High (Isolated Process): Executada num processo secundário dedicado
• O servidor HTTP IIS apenas está disponível na versão profissional do Windows XP– Por omissão, não está instalado. (Control Panel Add Remove Programs Add/Remove Windows Components)
• Notoriedade deve-se à sua utilização no desenvolvimento da camada de UI de aplicações Web– No contexto do desenvolvimento de aplicações Web suportadas pela
plataforma .NET
• É fundamentalmente o conjunto de tipos .NET que participam no atendimento de pedidos HTTP– Tipos do espaço de nomes System.Web e dos espaços de nomes nele
contidos• Estes tipos estão definidos no assembly System.Web.dll
• Caracteriza-se por uma arquitectura extensível– Designada HTTP Pipeline
• As páginas ASP.NET são “apenas” um dos pontos terminais no atendimento de pedidos