Soluções De Conectividade WWW-BD - Argo Navis

Transcription

Soluções de ConectividadeWWW-BDHelder RochaAbril de 1997

Sumário) Parte I - HTML e CGI Breve histórico da World Wide Web Introdução ao HTTP e ao CGI Comunicação com SGBDs Recursos para Oracle e Sybase) Parte II - Java Introdução à linguagem Java Alternativas BD - Java JDBC: Java Database Connectivity Exemplos Produtos

Breve Histórico)A Internet– rede antiga: mais de 25 anos; rede acadêmica.)Popularidade:– crescente organização das informações– podia-se encontrar de tudo na Internet. Aonde?)Gophers. depois WWW.– mais um serviço: telnet para info.cern.ch e logarcomo “www”.– palavras seguidas de um número: “links”.– orientado a caracter– linguagem HTML– HTTP: protocolo semelhante ao FTP

Evolução dos browsersPopularidade da WWW veio combrowsers gráficos.) Interface colorida e mais tardeinterativa) O primeiro: NCSA Mosaic for X-Window;depois Mosaic para Windows) Netscape) NS x MSIE)

Informações Dinâmicas)Crescente competitividade da WWW– documentos estáticos de texto cada vezmenos comuns;– meios de interatividade cada vez maisacessíveis e fáceis de usar.)Interatividade em página web - doisníveis– do lado do servidor (CGI)– do lado do cliente (Java e JavaScript))Cookies

ExemplosYahoo, Altavista, lojas de livros, deCDs, diretórios de e-mail de usuários,sistemas de Internet Banking, sitesexclusivos para pagantes, etc.) Locadoras de vídeo, bibliotecas,revistas, jornais e serviços restritos aassinantes) Intranet)– interface multiplataforma,– servidor seguro

HTML) HTML- Hypertext MarkupLanguage.– linguagem de formatação de textos– vários elementos usados comodescritores– define títulos, listas, tabelas e linkspara textos e imagens– descritores entre caracteres especiais“ ” e “ ”.

HTML)Estrutura básica: html head title Título de uma Página /title /head body p (.) /body /html )Toda a formatação da página dependeexclusivamente dos descritores HTML.

CGI)))Common Gateway Interface: permite execução deprogramas em servidor Web.Programas CGI podem ser escritos em qualquerlinguagem.Métodos HTTP– GET: linha de comando.– POST: entrada/saída padrão. Não tem um limite decaracteres.)Formato de cabeçalho mínimo HTTP:– Content-Type: tipo de conteúdo/extensão– Uma linha em branco (fim cabeçalho).– Os dados, no formato indicado pelo cabeçalho ContentType.

Formulários)))Interface HTML para a entrada de dados pelousuário.CGI: processamento do lado do servidor. FORM define um bloco de formulário.– ACTION: a URL do programa CGI– METHOD, o método do protocolo HTTP)Objetos do formulário– INPUT, SELECT, TEXTAREA NAME identifica uma variável VALUE identifica valor armazenado.

Formulários)URL-encoding. Para decodificar:– 1. Converta as seqüências hexadecimais%hh para os caracteres equivalentes(ASCII)– 2. Converta os sinais de “ ” em espaços.– 3. Separe os pares nome/valor pelo “&”– 4. Identifique o nome e o valor separadospor “ ”.

Algumas aplicações de CGI) Contadorgráfico) Programa de Busca) FormMail) Gateways

Gateways CGI para SGBDs))Converte comandos de formulário HTML para alinguagem sistema de banco de dados.Converte respostas do sistema de banco dedados p/ HTML.BANCO tepara HTMLou gráficoResultadoRecebeProcessaEnvia

Exemplo: tabelaLivroTítuloSphereMr. VertigoThe Lost WorldA Nova CalifórniaCronica de unaMuerte AnunciadaInterview with theVampireLivro de SonetosAutorMichael CrichtonPaul AusterMichael CrichtonLima BarretoGabriel GarciaMarquezAnne RiceEditoraISBNBallantineFaber and FaberBallantineCírculo do LivroPlaza & ius de Moraes Círculo do Livro85-332-0139-5

Exemplo: formulário

Exemplo: SQL) Campodo formulário:– nome de variável armazena valordigitado pelo usuário.) Montainstrução para BD:select *from Livrowhere Autor 'Michael Crichton') Respostado CGI

Aplicações) Interfacemais completa: leitura,alteração, escrita) Locadora:– busca para encontrar o filme– locação– alteração do registro para indicarlocação

GráficosO programa CGI pode chamar outrosprogramas) Aplicações: gráficos.) CGI passa para aplicativo de construçãode imagens valores necessários) É necessário informar tipo de conteúdo:Content-Type)– Content-Type: image/gif– Content-Type: image/jpg

Aplicações Oracle e Sybase)OraPerl: subrotinas em Perl para gerarpesquisas em um formato reconhecívelpelo banco de dados rl4/oraperl)SybPerl: subrotinas em Perl para gerarpesquisas em um formato reconhecívelpelo banco de dados rl4/sybperl

Questões de Segurança: SSL)Não se pode confiar no meio por ondesão enviados os comandos.)Qualquer computador ou roteador nomeio do caminho pode interceptar osdados (inclusive recuperar senhas ecódigos de acesso).)Solução: criptografia: servidor segurocom SSL ou SHTTP

O que é Java?Linguagem orientada a objetosdesenvolvida pela Sun) Muito popular na Internet e fora dela) Muito parecida com C/C . É um “C”mais simples e mais poderoso.) É independente de plataforma, segura,robusta, multi-threaded, eficiente e dealto desempenho.)

O que é Java (2)Tudo em Java são classes e objetos) Os métodos (funções) e variáveissempre pertencem ou a uma classe oua um objeto.) Classes são organizadas em “pacotes”) Java não suporta herança múltipla declasses) Suporta “herança” de múltiplas“interfaces”)– “interfaces” são classes especiais cujosmétodos são apenas declarados

O que é Java (3))Há dois tipos básicos de aplicações Java:– applets: aplicação que executa dentro deum browser (é limitada pela capacidade dobrowser)– aplicação standalone: aplicação que rodaindependente de browser (como qualqueroutra aplicação desenvolvida em outralinguagem))Aplicações Java, depois de compiladas,rodam em qualquer lugar.

Java X C/C Java é bem mais simples que C/C ) Não tem apontadores (não tem acessodireto a posições de memória)) Tem um sistema de coleta de lixo, quedispensa liberação de memória) Usa exceções (como Delphi)) É uma evolução do C para orientação aobjetos, sem a complexidade de C )

Applets) Appletssão aplicações que rodamem um browser.) Tem grande potencial na Internete Intranet) É a aplicação da Internet e doNetwork Computer) Applets remotos passam por umaverificação local -- Segurança

Applets versus aplicações) Applets– não rodam de forma independente– dependem de aplicativo gráfico (geralmenteum browser)– são sempre programas gráficos– execução depende de chamada através deuma página HTML.) Aplicações– rodam independentemente– podem ser gráficas, podem ser de linha decomando e podem sequer aparecer na tela.

API, classes e pacotesAPI Java: biblioteca de todas as classese interfaces pré-definidas na linguagem.) Organização em “pacotes”.) Cada pacote é um conjunto de classesque tem alguma função comum.) Pacotes da versão 1.02:)– java.lang, java.awt, java awt.image ejava.awt.peer, java.io, java.net , java.util,java.applet)Identificação universal pacote.classe– java.lang.System)Classes precisam ser importadas antesde usadas

Segurança das applets) Identificarapplets seguros atravésde um certificado (disponível naversão 1.1).) Garantir que um determinadoapplet é confiável para ampliar assuas capacidades.

Java: Estado AtualVersão 1.0 de Java lançada em Jan/96) Versão atual é 1.1 (mais popular ainda é1.02)) Distribuição gratuita através do JDK(Java Development Kit) na JavaSoft:)– http://www.javasoft.com– (ou http://java.sun.com))Contém todas as classes e interfacesnecessárias para se trabalhar combancos de dados

Java é ideal para BDs)segura– garante integridade do BD)produtividade do desenvolvimentomaior– verificação mais rígida da compilação,gerenciamento de memória otimizado)flexibilidade adicional– carregamento dinâmico, métodos nativos,tipos, cache de dados no cliente)familiar– sintaxe muito parecida com C/C

Alternativas de conectividadea BDs com Java)Bancos de Dados Relacionais– JDBC (Java Database Connectivity))Bancos de Dados Orientados a Objetos– ODMG, capítulo 7Integração BD Relacional-BD Objeto) Serialização de objetos: persistência)– API RMI/Serialization

SerializaçãoPermite implementação de objetos“persistentes”) Parte da API Java RMI - Remote MethodInvocation (JDK 1.1)) Permite que um objeto Java possa sersalvo de forma persistente)– é necessário fazer chamadas explícitas paraserializar cada objeto– existem formas menos rudimentares comJDBC e ODMG

Bancos de Dados de ObjetosUsam modelo de objetos (nãorelacional)) Persistência transparente para objetos) Há uma API padrão para Java sendodesenvolvida pelo ODMG (ObjectDatabase Standards Consortium)) Já existem produtos para BDs deObjetos)– Object Design (http://www.odi.com)– POET (http://www.poet.com)

Java em BDs RelacionaisDesde que Java foi lançada, há grandeinteresse em desenvolver uma API paraacesso a BDs relacionais) Vantagens de Java levaram empresas adesenvolver APIs proprietárias para estefim) Para evitar uma “torre de Babel” deimplementações diferentes no futuro, aJavaSoft desenvolveu o JDBC)

O que é JDBC?Java Database Connectivity: umainterface padrão de acesso a bancos dedados SQL oferecendo acesso uniformea uma gama de bancos de dadosrelacionais.) Um programa Java pode enviarinstruções SQL para qualquer banco dedados SQL.) Pode-se escrever um único programaque será capaz de enviar instruções SQLpara o banco de dados correto.)

JDBC:Java Database ConnectivityÉ uma API independente de SGBD) Define classes Java para representar)––––conexões de rededeclarações SQLconjuntos de resultadosconjuntos de dadosBaseado no padrão X/Open Call LevelInterface (CLI)) Espelhado no ODBC)

JDBC:Java Database ConnectivityAtravés de um “Gerente de Drivers”,drivers próprietários podem ser usadospara conectar a diversos SGBDs) Driver especial: “Ponte ODBC-JDBC”)– suporta JDBC através de drivers ODBC– melhor forma de usar ODBC através de Java

Diagrama de Camadas JDBCAplicação JavaJDBC APIGerente rtoDriver1JDBC Driver los Proprietários

Classes da API JDBC)Aversão 1.1 consiste de 16classes, interfaces e exceções) As principais (interfaces) são:–––––java.sql.DriverManager sql.ResultSetjava.sql.Driver

O que JDBC faz?)Em resumo, JDBC dá condições derealizar três operações:– estabelecer uma conexão com um banco dedados– enviar instruções SQL– recuperar e processar os resultados.)JDBC é uma interface de baixo nível.Interfaces mais amigáveis podem serconstruídas em cima dela.

ExemploConnection con in", "passwd");Statement stmt con.createStatement();ResultSet rs stmt.executeQuery ("SELECTNúmero, Título, Preço FROM Livro");while (rs.next()) {int x getInt("Número");String s getString("Autor");float f getFloat("Preço");}

Produto JDBC da Sun)O produto JDBC consiste de três componentes:– O JDBC driver manager,– JDBC driver test suite e– ponte JDBC-ODBC.)Ponte JDBC-ODBC permite que drivers ODBCpossam ser usados como drivers JDBC.)Forma de acessar SGBDs menos popularesque ainda não tem um driver JDBC

URL JDBC)A URL usada no JDBC tem a sintaxe seguinte: jdbc:subprotocolo:subnome)O subprotocolo é o nome do tipo de protocolode banco de dados que está sendo usado parainterpretar o SQL.)O subnome é o nome que o subprotocoloutilizará para localizar um determinadoservidor ou base de dados. Exemplos: jdbc:odbc:servidor1 jdbc:odbc:servidor1:80/web/data

Como usar JDBC - Exemplo deuso: Recuperando informaçãoExemplo comentado do tutorial da Sun(veja material impresso)) Programa em Java que pode ser usadocomo gabarito de teste (basta substituira URL, login, senha e incluir a instruçãoSQL que você deseja enviar para obanco de dados).) Consulte o tutorial da Sun para alistagem original completa.)

Produtos: Categorias deDrivers JDBC disponíveis)Ponte JDBC-ODBC driver ODBC)Native-API partly-Java driver)JDBC-Net pure Java driver)Native-protocol pure Java driver– Veja http://www.javasoft.com/products/jdbcpara dados mais atualizados.– Os primeiros fabricantes com drivers nacategoria 3 foram SCO, Open Horizon,Visigenic e WebLogic.

Drivers JDBC)Cat. 1: Ponte JDBC-ODBC– JavaSoft (suporta vários SGBDs via ODBC))Cat. 2: Driver API-nativa parcialmente-Java– Intersolv DataDirect (Oracle, Sybase), IBM DB2)Cat. 3: Driver protocolo de rede “pure Java”– Asgard, DataRamp, Intersoft Essentia, Openlink,SCO, Symantec, Visigenic, WebLogic)Cat. 4: Driver protocolo nativo “pure Java”– Imaginary mSQL-JDBC, SAS Share-Net, BorlandInterclient, Connect (InterBase 4, Sybase, Oracle,Informix, Ingres, ADABAS)

AplicaçõesApplets podem usar JDBC para acesso aBancos de Dados via Internet ou naIntranet) Restrições de segurança dos Appletspodem ser flexibilizadas através decertificados para ter mais acesso.) Aplicações Java C/S rodando em umaIntranet podem acessar diferentesSGBDs em diferentes plataformas)

Tendências) JavaObject-Relational Mapping– Sun planeja desenvolver uma novaAPI sobre JDBC, para mapear objetosJava transparentemente para linhasde uma ou mais tabelas relacionais) JavaTransaction Service– permite que um programa Javarealize uma transação distribuídaatravés de múltiplos BDs

Mais Informação, Especificações,Código, API, etc.) JavaSoft– http://java.sun.com) JavaSoftJDBC Home Page– http://splash.javasoft.com/jdbc) ODMGJava Page– http://www.odmg.org/java.html) ObjectSerialization– http://chatsubo.javasoft.com

CGI)Common Gateway Interface: permite execução de programas em servidor Web.)Programas CGI podem ser escritos em qualquer linguagem.)Métodos HTTP - GET: linha de comando. - POST: entrada/saída padrão. Não tem um limite de caracteres.)Formato de cabeçalho mínimo HTTP: - Content-Type: tipo_de_conteúdo/extensão