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 -

Slides:



Advertisements
Apresentações semelhantes
UNIPAC – ARAGUARI CAMPUS – IX PROF. EVERTON HIPÓLITO DE FREITAS
Advertisements

Introdução à Arquitectura de aplicações para a Web
HTML – Hyper Text Markup Language
Desenvolvimento Baseado em CGI Material cedido pelo Prof
Redes de Computadores 2 - Camada de Aplicação (HTTP) –
Wagner Santos C. de Jesus
Área de Desenvolvimento de Sistemas
Linux Servidor de Redes WEB Prof. Roberto Amaral.
Prof.: Carlos Hairon R. Gonçalves
Prof. Marco Aurelio N. Esteves
Tecnologias para Internet
Curso EFA de técnico de Informática e Sistemas
Protocolo HTTP e HTML Prof. Danton Cavalcanti Franco Junior
Aplicativos Web Com Orientação a Objetos
PÁginas Dinâmicas Programação Web.
Introdução ao Desenvolvimento Web
Formulários Objectivo: obter do utilizador respostas personalizadas
Programação para estrutura Cliente-Servidor
Tecnologias de Internet
Tecnologias de Internet
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ção Semestre de Inverno 2010/2011
Tópicos de Sistemas de Informação A
Tópicos de Sistemas de Informação A Carlos Oberdan Rolim Ciência da Computação.
Protocolo HTTP e Web Servers
Web Services Uninorte Semana de Tecnologia da Informação
Apresentação Semestre de Inverno 2010/2011
A autoria - II.
Conceitos de J2EE para a WEB
HTTP Hypertext Transfer Protocol.
Aula 2 – Primeiros Passos com a arquitetura Web Servidor
Arquitecturas de extensão do servidor HTTP CGI | ISAPI : ASP, ASP.NET
RESTful Webservices Lucas Batistussi –
Programação WEB Variáveis Globais Get x Post Manipulação de Arquivos
Formulários HTML Jobson Ronan
PROGRAMAÇÃO PARA INTERNET Prof.: Jean Carlo Mendes
José Francisco PHP & MySQL. Os slides originais são parte do material de cursos anteriores do curso de PHP, ministrados por Sérgio Clemente.
Aplicativos Web Com Orientação a Objetos
Aula 2 – Primeiros Passos com a arquitetura Web Servidor Instituto Metodista Izabela Hendrix Curso de Tecnologia em Análise e Desenvolvimento de Sistemas.
Escola Básica e Secundária Dr
Aplicações Web com Orientação a Objetos
PHP e Formulários Web.
Aula 1 - Fundamentos Web Servidor
IIS Web Server.
Aula 10. Revisão seminário CGI – Common Geteway Interface  Trata-se de uma tecnologia que permite gerar páginas dinâmicas permitindo que um pagina passe.
LINGUAGENS DE PROGRAMAÇÃO WEB
Padrões de Interação com o Usuário
Redes de Computadores I Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo -
Requisições e Respostas HTTP Prof. Leandro Luque.
Infra-Estrutura de Comunicação (IF678) Aula Prática 02 Programação de Sockets TCP e UDP Hugo Simões Original por: Flávio.
Como é que a Internet funciona
Infra-Estrutura de Comunicação (IF678)
O Que É a Internet e Como Funciona: Tecnologias Ativas Renato M.E. Sabbatini, PhD Aula.
Projeto Supervisionado no Desenvolvimento de Aplicações Profissionais na Web Introdução a Aplicações Web.
Unidade 5 – Integrando JSP e Servlets Prof.: Henrique Santos
Tópicos de Sistemas de Informação A Carlos Oberdan Rolim Ciência da Computação.
(c)AB, WEB: filosofia e origens Grupo de utilizadores Internet Ambiente académico dominado por sistemas UNIX Conjunto de serviços básicos: correio.
OBJETIVO Nesta aula será apresentado o desenvolvimento básico sobre HTTP Servlets. Espera-se que, ao final da apresentação, o aluno tenha noções de como.
José Francisco PHP & MySQL. Os slides originais são parte do material de cursos anteriores do curso de PHP, ministrados por Sérgio Clemente.
Programação Distribuída em Java Aula Na aula passada vimos: TomCat –Instalação e configuração –Criação de contexto JSP... uma introdução –Expressões.
Redes de computadores: Aplicações Prof. Dr. Amine BERQIA
Aula 1 - Fundamentos Web Servidor Instituto Metodista Izabela Hendrix Curso de Tecnologia em Análise e Desenvolvimento de Sistemas Prof. Gilmar Medeiros.
Aplicativos para Internet Prof. Wolley W. Silva
 Um servlet é uma classe Java usada para estender as capacidades de servidores que hospedam aplicativos acessados por meio do paradigma request-response.
PROGRAMAÇÃO PARA INTERNET Prof.: Jean Carlo Mendes
Aplicativos para internet Prof. Wolley
Internet Service Providers Introdução Software para Internet Protocolos World Wide Web (WWW) Página Inicial A internet tem relacionado o mundo dos computadores.
Programação Web Comunicação entre Cliente e Servidor Leonardo IFRN.
Redes de Computadores e Aplicações – Camada de aplicação IGOR ALVES.
Servidor WEB IGOR ALVES. O protocolo HTTP 1990 surgimento da aplicação www Grande quantidade de informação que pode ser acessada por demanda Buscadores.
Transcrição da apresentação:

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 - Nuno Datia –

© ISEL 2006/2007 DEEC - LEIC – Programação na Internet 2 Autores e contributos Autores –Luís Falcão Contributos –Paulo Pereira –Pedro Félix –Jorge Martins –Carlos Guedes –Nuno Datia

© ISEL 2006/2007 DEEC - LEIC – Programação na Internet 3 Arquitecturas de extensão do servidor HTTP CGI ISAPI –ASP –ASP.NET

© ISEL 2006/2007 DEEC - LEIC – Programação na Internet 4 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

© ISEL 2006/2007 DEEC - LEIC – Programação na Internet 5 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? 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? stdout redireccionado para a ligação com o cliente

© ISEL 2006/2007 DEEC - LEIC – Programação na Internet 6 Criação dinâmica de recursos (com CGI) 1 - Mensagem 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

© ISEL 2006/2007 DEEC - LEIC – Programação na Internet 7 Variáveis de ambiente VariávelDescrição GATEWAY_INTERFACE versão CGI SERVER_NAME nome ou endereço IP do servidor SERVER_SOFTWARE nome ou versão do software do servidor SERVER_PROTOCOL protocolo e versão usados pelo servidor (HTTP 1.X) SERVER_PORT porto do servidor REQUEST_METHOD método usado no pedido (GET, POST) PATH_INFO informação sobre a PATH do CGI PATH_TRANSLATED raiz do servidor + PATH_INFO SCRIPT_NAME nome do script CGI DOCUMENT_ROOT raiz do servidor WWW QUERY_STRING query string enviada através do método GET REMOTE_HOST nome do cliente REMOTE_ADDR endereço IP do cliente AUTH_TYPE método de autenticação do cliente REMOTE_USER nome do utilizador remoto (cliente) REMOTE_IDENT identificação do cliente (RFC) CONTENT_TYPE cabeçalho HTTP MIME Content-Type CONTENT_LENGTH número de bytes a ler do stdin (POST) HTTP_FROM Cabeçalho HTTP MIME From ( do cliente) HTTP_ACCEPT Cabeçalho HTTP MIME Accept (tipos aceites pelo cliente) HTTP_USER_AGENT Cabeçalho HTTP MIME User-Agent (aplicação cliente) HTTP_REFERER Cabeçalho HTTP MIME Referer (URL anterior)

© ISEL 2006/2007 DEEC - LEIC – Programação na Internet 8 CGI via Forms (1) 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

© ISEL 2006/2007 DEEC - LEIC – Programação na Internet 9 CGI via Forms (2) Um Form simples <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" " Livro de Convidados Preencha o meu livro de convidados! Primeiro Nome: Ultimo Nome: Password: URL gerado: FirstName=Eusébio&LastName=Ferreira&Password=qwerty URL gerado: FirstName=Eusébio&LastName=Ferreira&Password=qwerty

© ISEL 2006/2007 DEEC - LEIC – Programação na Internet 10 #! /usr/local/bin/perl print HTTP/ 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/ 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/ 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#

© ISEL 2006/2007 DEEC - LEIC – Programação na Internet 11 CGI de echo Os Forms podem simular uma sessão com estado (Hidden fields) Os Forms podem simular uma sessão com estado (Hidden fields) Resultado no browser

© ISEL 2006/2007 DEEC - LEIC – Programação na Internet 12 ISAPI 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. Não é um processo Mas sim uma DLL Uma possível configuração…

© ISEL 2006/2007 DEEC - LEIC – Programação na Internet 13 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

© ISEL 2006/2007 DEEC - LEIC – Programação na Internet 14 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

© ISEL 2006/2007 DEEC - LEIC – Programação na Internet 15 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"

© ISEL 2006/2007 DEEC - LEIC – Programação na Internet 16 Sample ASP Page (SampleASP.asp) Demo 1 function Add(x, y) { return x+y; } Test ASP Page 2+2= Row Col0 Row Col1 Written directly to Response "); %>

© ISEL 2006/2007 DEEC - LEIC – Programação na Internet 17 Demo 2 Contador com ASP function inc() { if (Request.QueryString.Item("incr").Count ==0) return 0; return Number(Request.QueryString.Item("incr")) + 1; } " />

© ISEL 2006/2007 DEEC - LEIC – Programação na Internet 18 Arquitectura do IIS 5.0 InetInfo.exeInetInfo.exe Isapi_1.dll HTTP Requests & Responses DLLHost.exeDLLHost.exe Named Pipe 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 Socket Kernel Objects Isapi_2.dll Isapi_1.dll Isapi_3.dll

© ISEL 2006/2007 DEEC - LEIC – Programação na Internet 19 Hosting de aplicações no IIS 5.0 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

© ISEL 2006/2007 DEEC - LEIC – Programação na Internet 20 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)

© ISEL 2006/2007 DEEC - LEIC – Programação na Internet 21 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

© ISEL 2006/2007 DEEC - LEIC – Programação na Internet 22 Hosting de ASP.NET no IIS 5.0 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

© ISEL 2006/2007 DEEC - LEIC – Programação na Internet 23 Uma aplicação ASP.Net é um conjunto de assemblies executados em determinado AppDomain do host aspnet_wp.exe

© ISEL 2006/2007 DEEC - LEIC – Programação na Internet 24 Referências CGI –W3C ( –NCSA ( ISAPI –MSDN Library us/vccore98/HTML/_core_isapi_server_extensions_and_filters.asp Fritz Onion, Essential ASP.NET with Examples in C#, Addison-Wesley, 2003 Fritz Onion, Essential ASP.Net 2.0, Addison-Wesley, 2006