Cliente Servidor na Web Desenvolvimento Baseado em CGI Material cedido pelo Prof. Edgard Jamhour.

22
Cliente Servidor na Web Desenvolvimento Baseado Desenvolvimento Baseado em CGI em CGI Material cedido pelo Prof. Material cedido pelo Prof. Edgard Jamhour Edgard Jamhour

Transcript of Cliente Servidor na Web Desenvolvimento Baseado em CGI Material cedido pelo Prof. Edgard Jamhour.

Page 1: Cliente Servidor na Web Desenvolvimento Baseado em CGI Material cedido pelo Prof. Edgard Jamhour.

Cliente Servidor na Web

Desenvolvimento Baseado Desenvolvimento Baseado em CGIem CGI

Material cedido pelo Prof. Edgard Material cedido pelo Prof. Edgard JamhourJamhour

Page 2: Cliente Servidor na Web Desenvolvimento Baseado em CGI Material cedido pelo Prof. Edgard Jamhour.

Arquitetura Cliente-ServidorArquitetura Cliente-Servidor

• Inicialmente, a arquitetura WWW previa uma arquitetura cliente-servidor pura.– todo processamento feito no servidor

• Extensões recentes incluíram também capacidade de processamento nos clientes.

requisição

resposta

(HTML)Java

JavaScriptVBScriptActiveXPlugins

(CGI)Soluções Proprietárias

Page 3: Cliente Servidor na Web Desenvolvimento Baseado em CGI Material cedido pelo Prof. Edgard Jamhour.

Common Gateway InterfaceCommon Gateway Interface

• Forma não proprietária para construir páginas WWW dinâmicas.• CGI não é uma linguagem de programação.

– CGI: Gateway entre WWW e outras aplicações.• CGI é uma interface que permite executar programas e aplicações externas sob o

controle de um servidor HTTP.

Mensagem MIME e cabeçalho HTTP

Requisição HTTP Dados do Cliente

Resposta não WWW

Servidor

WWWWWW

APLICAÇÃOAPLICAÇÃO

Page 4: Cliente Servidor na Web Desenvolvimento Baseado em CGI Material cedido pelo Prof. Edgard Jamhour.

Seqüência de Eventos da Chamada Seqüência de Eventos da Chamada CGICGI

Abraão 30 anosJosé 40 anosPaulo 23 anosCarlos 50 anos...........

servidor

sistema dearquivos

banco com os dados detodos os funcionários deuma empresa.

aplicaçãoexterna

programaservidorWWW

consulta

Idade minima:

Selecione o Departamento:

anos30

InformaticaProducaoMarketingContabilidade

IIncluir funcionários em regime temporário:

SUBMIT Pressione para consultar

Formulario de Consulta

Idade=30&Depto=Producao&Temporario=SIM

5

1

2

3

4

7 6

Page 5: Cliente Servidor na Web Desenvolvimento Baseado em CGI Material cedido pelo Prof. Edgard Jamhour.

A Especificação CGIA Especificação CGI

• A especificação CGI foi criada a fim de evitar a necessidade de ter de adicionar novas funcionalidades constantemente ao servidor HTTP para atender a demanda de novas aplicações.

• Princípio:– Definir claramente a estrutura do núcleo do servidor

WWW e fornecer os mecanismos para extensão de serviços a partir deste núcleo.

– A extensão de serviços deveria ser feita através de uma API (application programming interface) disponível para programadores em C, Perl ou outra linguagem.

Page 6: Cliente Servidor na Web Desenvolvimento Baseado em CGI Material cedido pelo Prof. Edgard Jamhour.

Variáveis de AmbienteVariáveis de Ambiente

• Variáveis de ambiente são entidades que existem no sistema operacional da máquina do usuário.

• As variáveis de ambiente funcionam como variáveis globais para os processos do sistema operacional e para as aplicações rodando em modo usuário.– As variáveis de ambiente fornecem um mecanismo

para troca de informações entre as aplicações.– As variáveis são acessíveis pelo servidor HTTP e por

qualquer aplicação CGI lançada pelo servidor.– No caso do ambiente CGI, as variáveis de ambiente

são utilizadas para passar dados entre a requisição HTTP de um servidor para a aplicação CGI.

Page 7: Cliente Servidor na Web Desenvolvimento Baseado em CGI Material cedido pelo Prof. Edgard Jamhour.

Variáveis CGIVariáveis CGI

• REQUEST_METHOD: método requisitado pelo cliente

– métodos possíveis: GET e POST

• QUERY_STRING: dados passado pelo método GET ou através de ?

– Exemplo: http://www.yahoo.com?carros

• CONTENT_LENGTH: tamanho do objeto passado pelo método POST

– contem 0 se o método GET foi usado

• CONTENT_TYPE: tipo MIME do objeto passado por post

– tipos e subtipos:

• application: octet-stream, post-scritp

• text: plain, richtext

• image: gif, jpeg

• audio: basic

• video: mpeg

Page 8: Cliente Servidor na Web Desenvolvimento Baseado em CGI Material cedido pelo Prof. Edgard Jamhour.

Como a aplicação passa os dados para o Como a aplicação passa os dados para o servidorservidor

• Os dados do formulário HTML são codificados numa string e enviados ao WWW.

• O servidor WWW pode repassar os dados para o programa CGI de duas formas: pelo método GET e pelo método POST.

Nome=Edgard&Ramal=1675

&opcao=cadastrarServidorServidor

Nome: Nome:

Ramal:Ramal:

ProcurarProcurar

CadastrarCadastrar

EdgardEdgard

16751675

ProcessarProcessar

Page 9: Cliente Servidor na Web Desenvolvimento Baseado em CGI Material cedido pelo Prof. Edgard Jamhour.

Método GETMétodo GET

• Os dados são passados pela variável de ambiente QUERY_STRING• Os dados são lidos pela aplicação no servidor chamando a API que lê a

variável de ambiente.• Em linguagem C, por exemplo: getenv("QUERY_STRING")• O formulário HTML é montado da seguinte maneira:

<FORM METHOD = "GET" ACTION = "/Especial/CGI-bin/EnvVar.exe" >

<P>Entre campo1: <INPUT NAME="campo1"></P>

<P>Entre campo2: <INPUT NAME="campo2"></P>

<INPUT TYPE = "submit" VALUE = "Submit Query">

</FORM>

Page 10: Cliente Servidor na Web Desenvolvimento Baseado em CGI Material cedido pelo Prof. Edgard Jamhour.

Método POSTMétodo POST

• Os dados são passados pela entrada padrão do sistema operacional– Exemplo: stdin (standar input é normalmente o buffer de teclado)

• Os dados são lidos pela aplicação usando as mesmas funções que lêem a entrada padrão.• Em linguagem C, por exemplo: fgets(buffer,tamanho,stdin);• O formulário HTML é montado da seguinte maneira:

<FORM METHOD = “POST” ACTION = "/Especial/CGI-bin/EnvVar.exe”>

<P>Entre campo1: <INPUT NAME="campo1"></P>

<P>Entre campo2: <INPUT NAME="campo2"></P>

<INPUT TYPE = "submit" VALUE = "Submit Query">

</FORM>

Page 11: Cliente Servidor na Web Desenvolvimento Baseado em CGI Material cedido pelo Prof. Edgard Jamhour.

Geração de Páginas HTML DinâmicasGeração de Páginas HTML Dinâmicas

• A geração de páginas html dinâmicas é feita enviando o fonte da página diretamente para saída padrão:

– printf("Content-Type: text/html\n\n"); /*linha obrigatória*/– printf("<HTML>");– printf("<HEAD><TITLE>Titulo</TITLE></HEAD>");– printf("<BODY>");– printf("<P>PAGINA DINAMICA </P>");– printf("</BODY>");– printf("</HTML>");

Page 12: Cliente Servidor na Web Desenvolvimento Baseado em CGI Material cedido pelo Prof. Edgard Jamhour.

Resumo: Integração com a WebResumo: Integração com a Web

ServidorServidorWWWWWW

AplicaçãoAplicaçãoCGICGI

ServidorServidorWWWWWW

AplicaçãoAplicaçãoCGICGI

MÉTODO MÉTODO GETGET

MÉTODO MÉTODO POSTPOST

QUERY-STRINGQUERY-STRING

STDOUTSTDOUT

STDINSTDIN

STDOUTSTDOUT

• Os sistemas operacionais impõem limitações ao tamanho das variáveis de ambiente.

• Por esta razão, o método GET só é indicado para pequenas quantidades de dados.

• Para formulários que transmitam uma grande quantidade de dados para os servidor recomenda-se a utilização do método POST.

Page 13: Cliente Servidor na Web Desenvolvimento Baseado em CGI Material cedido pelo Prof. Edgard Jamhour.

Linguagens de ProgramaçãoLinguagens de Programação

• Paradigmas de linguagens de programação:– Procedural: descreve os passos de um algoritmo.– Orientado a objetos: descreve interação entre objetos.– Lógica: descreve soluções de predicados.– Funcional: descreve transformação de funções.

• Classificação quanto ao modo de execução dos aplicativos– linguagem compilada: C e C++– linguagem interpretada: Unix, shells, Tcl, Python e Visual Basic.– Compiladas/Interpretadas: Perl e Java.

Page 14: Cliente Servidor na Web Desenvolvimento Baseado em CGI Material cedido pelo Prof. Edgard Jamhour.

Integração com Banco de DadosIntegração com Banco de Dados

Banco de Banco de dadosdados

requisiçãorequisição

requisiçãorequisição

Nome RmalNome RmalEdgard 1675Edgard 1675

HTMLHTML

respostaresposta

respostaresposta

Nome: Nome:

Ramal:Ramal:

ProcurarProcurar

CadastrarCadastrar

EdgardEdgard

ProcessarProcessar

ServidorServidorWWWWWW

AplicaçãoAplicaçãoCGICGI

Servidor deServidor deBanco de DadosBanco de Dados

Page 15: Cliente Servidor na Web Desenvolvimento Baseado em CGI Material cedido pelo Prof. Edgard Jamhour.

Tipos de Banco de DadosTipos de Banco de Dados

• Cliente-Servidor:

– As requisições são processadas sempre no servidor.

– Apenas a resposta é enviada ao cliente.

• Banco de Dados em Arquivo:

– As requisições são sempre processadas no cliente.

– Todos os dados das tabelas são enviados ao cliente para processamento local.

cliente servidorservidor

clientetabelas

tabelas

Page 16: Cliente Servidor na Web Desenvolvimento Baseado em CGI Material cedido pelo Prof. Edgard Jamhour.

Banco de DadosBanco de Dados em Ambiente WWW em Ambiente WWW

• As consultas são sempre processadas no servidor.

clientecliente ServidorServidorWWWWWW

clienteclientetabelastabelas

tabelastabelas

Servidor de Servidor de Banco de Banco de

DadosDados

ServidorServidorWWWWWW

CGICGI

CGICGI

Page 17: Cliente Servidor na Web Desenvolvimento Baseado em CGI Material cedido pelo Prof. Edgard Jamhour.

Arquitetura da Aplicação de Banco de Arquitetura da Aplicação de Banco de DadosDados

• A montagem da aplicação com banco de dados em ambiente Web envolve a integração de vários elementos, conforme mostra a figura abaixo.

Cliente WWWCliente WWW(Lógica de (Lógica de

Apresentação)Apresentação)

SGDBSGDB(Lógica de (Lógica de Acesso aos Acesso aos

Dados)Dados)

Programa CGIPrograma CGI(Lógica de (Lógica de Negócio)Negócio)

CLIENTECLIENTE SERVIDORSERVIDOR

Servidor Servidor WWWWWW

(Lógica de (Lógica de Apresentação)Apresentação)

HTTPHTTPCGICGI

API’s de acesso a API’s de acesso a banco de dadosbanco de dados

Page 18: Cliente Servidor na Web Desenvolvimento Baseado em CGI Material cedido pelo Prof. Edgard Jamhour.

API’s para Acesso a Banco de DadosAPI’s para Acesso a Banco de Dados

• CGI:– Programa executado escrito em qualquer linguagem de programação.

– O CGI é responsável por efetuar a consulta no banco de dados, e enviar o resultado ao cliente.

• Como o CGI acessa o banco de dados– Utilizando rotinas de acesso nativas.

• O ambiente de desenvolvimento usado para criar o programa executável deve ter um conjunto de APIs compatível com o banco de dados que se quer acessar.

– Utilizando ODBC• Sistema que permite ao programa CGI acessar qualquer tipo de banco

de dados.

Page 19: Cliente Servidor na Web Desenvolvimento Baseado em CGI Material cedido pelo Prof. Edgard Jamhour.

ODBC - Open Database ConnectivityODBC - Open Database Connectivity

• Conjunto de API’s padronizadas, desenvolvido pela Microsoft, mas tornado de domínio público.

• Permite que clientes windows acessem banco de dados locais ou remotos em qualquer outro tipo de plataforma.

ODBC PROVIDER

programaprograma

programaprograma

APIs para APIs para acesso a acesso a

ODBCODBC

APIs para APIs para acesso a acesso a

ODBCODBC

Driver Específico

para Acessar o BD

Driver Específico

para Acessar o BD

servidorservidor

tabelastabelas

tabelastabelas

Page 20: Cliente Servidor na Web Desenvolvimento Baseado em CGI Material cedido pelo Prof. Edgard Jamhour.

DSN - Data Source NameDSN - Data Source Name

• Os programas se referenciam as bases através do DSN– Data Source Name

• O DSN abstrai a localização física da base para o programa.• Exemplo:

– Banco de dados Access• DSN = MeuBD

• Caminho Físico: C:/Arquivos/banco.mdb

– Banco de dados SQL Server• DSN = MeuBD

• Endereço do Servidor: Nome Netbios do servidor

• Nome do banco de dados no servidor

Page 21: Cliente Servidor na Web Desenvolvimento Baseado em CGI Material cedido pelo Prof. Edgard Jamhour.

Envio da RequisiçãoEnvio da Requisição

• O programa CGI decodifica a string recebida pelo método POST e indentifica os nomes dos campos e valores recebidos.

• Ele verifica qual operação selecionar (Select, Insert, Update e Delete) analisando a string recebida pelo método get.

• Ele monta uma string SQL e envia para o provedor de ODBC usando as APIs disponíveis no ambiente de programação.

ServidorServidor

WWWWWWPROGRAMA PROGRAMA

CGICGI

String SQLString SQLSelect, Insert, Update, DeleteSelect, Insert, Update, Delete

ODBCODBC

parâmetrosparâmetros

Page 22: Cliente Servidor na Web Desenvolvimento Baseado em CGI Material cedido pelo Prof. Edgard Jamhour.

Captura da RespostaCaptura da Resposta

• A API de acesso ao ODBC retorna o resultado da operação (INSERT, DELETE ou UPDATE) ou o resultado da consulta (SELECT) especificada pela string SQL.

• Os dados são usados para formatar uma página de resposta (em formato texto ou html).

• Os dados são enviados ao cliente para que este os visualize através do browser.

ServidorServidor

WWWWWWPROGRAMA PROGRAMA

CGICGI

Status de uma operação, ouStatus de uma operação, ouo resultado de uma consultao resultado de uma consulta

ODBCODBC