A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Arquitecturas de extensão do servidor HTTP Arquitecturas de extensão do servidor HTTP CGI e ISAPI: ASP, ASP.NET Programação na Internet Secção de Sistemas.

Apresentações semelhantes


Apresentação em tema: "Arquitecturas de extensão do servidor HTTP Arquitecturas de extensão do servidor HTTP CGI e ISAPI: ASP, ASP.NET Programação na Internet Secção de Sistemas."— Transcrição da apresentação:

1 Arquitecturas de extensão do servidor HTTP Arquitecturas de extensão do servidor HTTP CGI e ISAPI: ASP, ASP.NET Programação na Internet Secção de Sistemas e Tecnologias de Informação ISEL-DEETC-LEIC Luis Falcão - lfalcao@cc.isel.ipl.ptlfalcao@cc.isel.ipl.pt Carlos Guedes – cguedes@cc.isel.ipl.ptcguedes@cc.isel.ipl.pt Nuno Datia – datia@isel.ipl.ptdatia@isel.ipl.pt

2 2007 - 2009 ©ISEL/DEETC/STI – Programação na Internet Autores e contributos Autores –Luís Falcão Contributos –Paulo Pereira –Pedro Félix –Jorge Martins –Carlos Guedes –Nuno Datia 2 Arquitecturas de extensão do servidor HTTP

3 2007 - 2009 ©ISEL/DEETC/STI – Programação na Internet Arquitecturas de extensão do servidor HTTP CGI –Interface standard de extensão do servidor HTTP ISAPI –Solução oferecida pela Microsoft (na aplicação IIS) –Tecnologias suportadas ASP ASP.NET 3 Arquitecturas de extensão do servidor HTTP

4 2007 - 2009 ©ISEL/DEETC/STI – Programação na Internet Tecnologias de servidor 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 4 Arquitecturas de extensão do servidor HTTP

5 2007 - 2009 ©ISEL/DEETC/STI – Programação na Internet CGI – O que é? Mecanismo que permite ao servidor WEB comunicar com aplicações que processam pedidos HTTP Como? –Por cada pedido é criado (com base no URL) um processo responsável pelo seu atendimento –Qual o input do processo? Standar Input (stdin) redireccionado para a ligação com o cliente Variáveis de ambiente com informação relativa ao pedido, ao servidor e ao cliente –Qual o output do processo? Standard Output (stdout) redireccionado para a ligação com o cliente 5 Arquitecturas de extensão do servidor HTTP

6 2007 - 2009 ©ISEL/DEETC/STI – Programação na Internet Criação dinâmica de recursos (com CGI) 6 1. Pedido HTTP (GET, POST) Apresentação Web Browser Web Server CGI Web Form 2. Criação do Processo CGI parâmetros da mensagem HTTP passados por variáveis de ambiente (GET), ou pelo Standard Input (POST) 3. Recurso gerado (via Standard Output) 4. Resposta HTTP Arquitecturas de extensão do servidor HTTP 1 2 3 4

7 2007 - 2009 ©ISEL/DEETC/STI – Programação na Internet Variáveis de ambiente 7 VariávelDescrição GATEWAY_INTERFACEversão CGI SERVER_NAMEnome ou endereço IP do servidor SERVER_SOFTWAREnome ou versão do software do servidor SERVER_PROTOCOLprotocolo e versão usados pelo servidor (HTTP 1.X) SERVER_PORTporto do servidor REQUEST_METHODmétodo usado no pedido (GET, POST) PATH_INFOinformação sobre a PATH do CGI PATH_TRANSLATEDraiz do servidor + PATH_INFO SCRIPT_NAMEnome do script CGI DOCUMENT_ROOTraiz do servidor WWW QUERY_STRINGquery string enviada através do método GET REMOTE_HOSTnome do cliente REMOTE_ADDRendereço IP do cliente AUTH_TYPEmétodo de autenticação do cliente REMOTE_USERnome do utilizador remoto (cliente) REMOTE_IDENTidentificação do cliente (RFC) CONTENT_TYPEcabeçalho HTTP MIME Content-Type CONTENT_LENGTHnúmero de bytes a ler do stdin (POST) HTTP_FROMCabeçalho HTTP MIME From (email do cliente) HTTP_ACCEPTCabeçalho HTTP MIME Accept (tipos aceites pelo cliente) HTTP_USER_AGENTCabeçalho HTTP MIME User-Agent (aplicação cliente) HTTP_REFERERCabeçalho HTTP MIME Referer (URL anterior) Arquitecturas de extensão do servidor HTTP

8 Demo 1 CGI de ECHO Executar o CGI que faz echo do pedido HTTP e das variáveis de ambiente –Usar o servidor TIWebServer 8

9 2007 - 2009 ©ISEL/DEETC/STI – Programação na Internet CGI via Forms (1) 9 Acede a um Form Envia o Form Utilizador faz submit do Form Reencaminhame nto para CGI Processa os dados envia para servidor (ou para cliente) Envio para cliente Output recebido Arquitecturas de extensão do servidor HTTP

10 2007 - 2009 ©ISEL/DEETC/STI – Programação na Internet CGI via Forms (2) 10 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> Livro de Convidados Preencha o meu livro de convidados! Primeiro Nome: Ultimo Nome: Password: URL gerado: http://www.contoso.com/cgi-bin/convidados.exe? FirstName=Eusébio&LastName=Ferreira&Password=qwerty URL gerado: http://www.contoso.com/cgi-bin/convidados.exe? FirstName=Eusébio&LastName=Ferreira&Password=qwerty Um Form simples Arquitecturas de extensão do servidor HTTP

11 2007 - 2009 ©ISEL/DEETC/STI – Programação na Internet 11 #! /usr/local/bin/perl print HTTP/1.1 200 OK\n"; print "Content-type: text/html", "\n\n"; print " ", "\n"; print " CGI livro de convidados escrito em Perl> ", "\n"; print " Bem vindo ao meu livro de convidados, "\n"; print "REQUEST_METHOD", "$ENV{´REQUEST_METHOD´}", "\n"; print "QUERY_STRING", "$ENV{´QUERY_STRING´}", "\n"; print " ", "\n"; exit(0); PERLPERL void main() { char *env; cout << HTTP/1.1 200 OK"<<endl; cout << "Content-type: text/html"<<endl<<endl; cout "<<endl; cout CGI livro de convidados escrito em C++ << endl; cout Bem vindo ao meu livro de convidados " << endl; env = getenv("REQUEST_METHOD"); cout " << endl; env = getenv("QUERY_STRING"); cout " << endl; } C++C++ class V1 { public static void ProcessRequest() { string content = @" title>CGI livro de convidados escrito em C++ Olá, sou um CGI gerado pela versão 2. "; // 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); } C#C# Arquitecturas de extensão do servidor HTTP

12 2007 - 2009 ©ISEL/DEETC/STI – Programação na Internet CGI de echo 12 Os Forms podem simular uma sessão com estado usando (Hidden fields) Resultado no browser Arquitecturas de extensão do servidor HTTP

13 2007 - 2009 ©ISEL/DEETC/STI – Programação na Internet ISAPI 13

14 2007 - 2009 ©ISEL/DEETC/STI – Programação na Internet ISAPI As extensões ISAPI são uma tecnologia do lado do servidor que, juntamente com o CGI, foram das primeiras tecnologias a suportar a geração de 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. –Não é um processo –Mas sim uma DLL 14 Uma possível configuração… Arquitecturas de extensão do servidor HTTP

15 2007 - 2009 ©ISEL/DEETC/STI – Programação na Internet Internet Information Services - IIS 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 comunicação com o cliente 15 Arquitecturas de extensão do servidor HTTP

16 2007 - 2009 ©ISEL/DEETC/STI – Programação na Internet ISAPI Extensions 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)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 16 Arquitecturas de extensão do servidor HTTP

17 2007 - 2009 ©ISEL/DEETC/STI – Programação na Internet ISAPI: ASP 17

18 2007 - 2009 ©ISEL/DEETC/STI – Programação na Internet Active Server Pages - ASP 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" 18 Arquitecturas de extensão do servidor HTTP

19 2007 - 2009 ©ISEL/DEETC/STI – Programação na Internet Demo 1: Sample ASP Page (SampleASP.asp) 19 function Add(x, y) { return x+y; } Test ASP Page 2+2= Row Col0 Row Col1 Written directly to Response "); %> Arquitecturas de extensão do servidor HTTP

20 2007 - 2009 ©ISEL/DEETC/STI – Programação na Internet Demo 2: Contador com ASP 20 function inc() { if (Request.QueryString.Item("incr").Count == 0) return 0; return Number(Request.QueryString.Item("incr")) + 1; } " /> Arquitecturas de extensão do servidor HTTP

21 2007 - 2009 ©ISEL/DEETC/STI – Programação na Internet Arquitectura do IIS 5.0 Processo principal (InetInfo.exe) –Internet Services Protocolo HTTP; Autenticação; Resolução de URLs –Hosting de aplicações Processos secundários (DLLHost.exe) –Hosting de aplicações 21 InetInfo.exeInetInfo.exe Isapi_1.dll HTTP Requests & Responses DLLHost.exeDLLHost.exe Named Pipe Socket Kernel Objects Isapi_2.dll Isapi_1.dll Isapi_3.dll Arquitecturas de extensão do servidor HTTP

22 2007 - 2009 ©ISEL/DEETC/STI – Programação na Internet Hosting de aplicações no IIS 5.0 22 InetInfo.exeInetInfo.exeDLLHost.exeDLLHost.exeDLLHost.exeDLLHost.exe Main Process Pooled Process Isolated Process IsolatedApplication... App 1 App n... App 1 App 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 Arquitecturas de extensão do servidor HTTP

23 2007 - 2009 ©ISEL/DEETC/STI – Programação na Internet Configuração no IIS 5.0 (ISAPI: ASP) 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 ) 23 Arquitecturas de extensão do servidor HTTP

24 2007 - 2009 ©ISEL/DEETC/STI – Programação na Internet ISAPI: ASP.NET 24

25 2007 - 2009 ©ISEL/DEETC/STI – Programação na Internet ASP.NET – O que é? 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 25 Arquitecturas de extensão do servidor HTTP

26 2007 - 2009 ©ISEL/DEETC/STI – Programação na Internet Hosting de ASP.NET no IIS 5.0 26 aspnet_wp.exe (ASP.NET worker process) –Processo hospedeiro do runtime ASP.NET CLR + System.Web API aspnet_isapi.dll (Extensão ISAPI) –Encaminha o atendimento de pedidos para URLs terminados em.aspx (entre outros) para o runtime ASP.NET –Utiliza para o efeito Named Pipes aspnet_wp.exeaspnet_wp.exeInetInfo.exeInetInfo.exe aspnet_isapi.dll HTTP Requests & Responses Named Pipe Socket Kernel Objects Page Class IHttpHandler Arquitecturas de extensão do servidor HTTP

27 2007 - 2009 ©ISEL/DEETC/STI – Programação na Internet Uma aplicação ASP.Net é um conjunto de assemblies executados em determinado AppDomain do host aspnet_wp.exe 27 Arquitecturas de extensão do servidor HTTP

28 2007 - 2009 ©ISEL/DEETC/STI – Programação na Internet Referências CGI –W3C ( http://www.w3.org/CGI/ ) –NCSA ( http://hoohoo.ncsa.uiuc.edu/cgi/ ) ISAPI –MSDN Library ( http://msdn.microsoft.com/library/default.asp?url=/library/en- us/vccore98/HTML/_core_isapi_server_extensions_and_filters.asp ) ASP.NET –Fritz Onion, Essential ASP.NET with Examples in C#, Addison-Wesley, 2003 –Fritz Onion, Essential ASP.Net 2.0, Addison-Wesley, 2006 28 Arquitecturas de extensão do servidor HTTP


Carregar ppt "Arquitecturas de extensão do servidor HTTP Arquitecturas de extensão do servidor HTTP CGI e ISAPI: ASP, ASP.NET Programação na Internet Secção de Sistemas."

Apresentações semelhantes


Anúncios Google