450 likes | 640 Views
Estudo de caso:. Café Expresso Ltda. A estória de João. Café Expresso Ltda. Características: Sistema de controle de vendas de café: Implementado em Delphi Interface Windows p/ Desktop Possui um SGBD. Café Expresso Ltda. Um dia o chefe de João traz novos requisitos.
E N D
Estudo de caso: Café Expresso Ltda. A estória de João...
Café Expresso Ltda. • Características: • Sistema de controle de vendas de café: • Implementado em Delphi • Interface Windows p/ Desktop • Possui um SGBD
Café Expresso Ltda. Um dia o chefe de João traz novos requisitos... • Preciso vender café através da Internet!! • Estou perdendo dinheiro! Quero isso PARA ONTEM!
Café Expresso Ltda. • Como vou integrar o sistema existente com um novo módulo de acesso à Internet? João pensa... • Terei que reescrever o sistema em Java? ASP?
Café Expresso Ltda. Enquanto isso, o chefe traz mais requisitos... • Meus concorrentes estão vendendo mais variedades de café do que eu! Preciso integrar nosso sistema de venda pela internet com os sistemas de meus fornecedores, e de novos fornecedores, para aumentar meus lucros!!! • PARA ONTEM!!!
Café Expresso Ltda. João desesperado... • Já estou reescrevendo o sistema em Java... • Pelo menos o sistema dos fornecedores é escrito em Java??
Café Expresso Ltda. O chefe esclarece... • Um dos fornecedores tem o sistema em Delphi... • ... o outro em C++ ... • ... o outro em Visual Basic ... • Preciso disso PRA ONTEM!
Café Expresso Ltda. Precisamos ajudar João...
Parte 1 – Introdução Web Services Rodrigo Rebouças de Almeida rodrigor@rodrigor.com
Terminal Terminal Arquiteturas - Histórico • MainFrames Mainframe [ Dados + Lógica + Interface ]
PC PC Cliente Cliente Arquiteturas - Histórico • Arquitetura Cliente-Servidor [ Dados ] Servidor c/ SGBD [ Lógica + Interface ]
Internet Browser Web Browser Web Arquiteturas - Histórico • Arquitetura em n-camadas SGBD Servidor Web Servidor deAplicação [ Lógica ] [ Dados ] [ Interface ]
Internet Cliente O Problema de João... Integrar o sistema legado com um novo sistema Integrar o sistema da empresa com os sistemas dos fornecedores A, B, C Fornecedor A 1 Fornecedor B 2 Fornecedor C Servidor de Aplicação
Vamos tentar resolver o problema de João usando Web Services.
O que é um Web Service? • Um Web Service é um ponto de acesso a funcionalidade que pode ser: • Localizado dinamicamente • Ter sua interface descoberta automaticamente, porque o serviço sabe se descrever • Ser chamado na Web
Web services • Se fundamenta basicamente em três tecnologias: • Web Services Description Language (WSDL) • Define a interface de acesso ao serviço • Simple Object Access Protocol (SOAP) • Um protocolo baseado em XML. Permite que os clientes se comuniquem com os provedores de serviço. • Universal Description, Discovery and Integration (UDDI) • Permite Web services registrarem suas características, permitindo que outras aplicações as encontrem.
Usar XML para toda a comunicação • Extended Markup Language (XML) • Oferece um formato ASCII para trocar qualquer tipo de informação estruturada • Usa o “estilo” HTML de markup com tags • <pessoa nome=”João”> <frutasFavoritas> <fruta>Manga</fruta> <fruta>Maçã</fruta> <fruta>Uva</fruta> </frutasFavoritas></pessoa> • Os tags podem ser definidos para criar uma “Aplicação XML” ou “Linguagem XML”
Usar SOAP fazer RPC • SOAP é uma forma de fazer Remote Procedure Call (RPC) usando documentos XML
Descrever o serviço remoto usando WSDL • WSDL = Web Services Description Language • Pronunciado “wisdle” • É uma linguagem XML que contém informação sobre a interface, a semântica, e outros detalhes de chamadas a um Web Service
Definir ontologias • Precisamos saber o que as coisas significam • Exemplo: como mandar uma ordem de serviço se não sei o que cada campo deve conter? • Várias organizações definem e padronizam ontologias • ebXML • RosettaNet • (...)
Usar UDDI para localizar serviços • UDDI = Universal Description, Discovery, and Integration • Permite cadastrar serviços e localizá-los • Não é necessário usar UDDI se o cliente já tiver o documento WSDL
Web services, Arquitetura 3 - Provê serviço Serviço cliente Provedorde serviço << SOAP >> << SOAP >> << SOAP >> 1 - Registra-se 2 - Buscaserviço Serviçode diretório
SOAP • Simple Object Access Protocol • Define uma forma de transferir documentos XML através da Internet; • Aplicações cliente se comunicam com Web services usando SOAP como protocolo; • SOAP define um envelope para transmissão de mensagens, oferece regras para representar “remote procedure calls” (RPCs);
SOAP • É o padrão para troca de mensagens usando XML; • Desenvolvido sob a supervisão da W3C; • Permite a transferência de mensagens através de protocolos de alto nível, como HTTP e SMTP; • É mais usado sobre HTTP, pois consegue atravessar firewalls!
SOAP • Estrutura de uma mensagem SOAP: <SOAP:Envelope xmlns:SOAP= http://schemas.xmlsoap.org/soap/envelope/> <SOAP:Header> <!conteudo do cabecalho > </SOAP:Header> <SOAP:Body> <!conteudo do corpo> </SOAP:Body> </SOAP:Envelope>
João agora não precisa reimplementar o sistema de controle de vendas de café para este ser acessível via Internet... Basta fazer o sistema existente e o módulo de acesso a Internet conversarem usando SOAP e descrever os dados em XML
Integração entre aplicações dentro de um domínio administrativo XML XML HTML Parser XML Internet SOAP Servidor de Aplicação
Resolvemos o 1o problema, publicamos o sistema existente na Internet, agora precisamos ligar nosso sistema aos sistemas dos nossos fornecedores! • Podemos usar SOAP como protocolo de comunicação! Mas, como saber a interface do sistema do meu fornecedor? Como posso fazer meu sistema iteragir com um sistema escrito em outra linguagem, em outra plataforma?
WSDL • Web Service Description Language • É uma linguagem XML para descrever Web services; • Segue um conceito parecido da “Interface Definition Language” (IDL) usado em CORBA; • Descreve detalhes como definição de tipos de dados, operações suportadas pelo Web service, formato das mensagens, endereço de rede do Web service, etc.
Internet WSDL WSDL WSDL WSDL Resolvido o problema, agora João tem seu Sistema integrado com os fornecedores. Fornecedor A << SOAP >> << SOAP >> Café Expresso Ltda. Fornecedor B << SOAP >> Fornecedor C Último detalhe... Como descobrir novos fornecedores??
UDDI • Universal Description, Discovery and Integration • Provê um mecanismo para registro e localização de Web services; • É um diretório que contém vários Web services registrados, onde associamos um nome a um serviço, como um Web service.
UDDI • Permite que empresas registrem seus serviços e possam interagir com outras empresas interessadas. • UDDI é um Webservice baseado em XML e SOAP; • A interação com um serviço UDDI é baseado em interfaces SOAP pré-definidas.
UDDI • Um registro UDDI é organizado em duas entidades fundamentais: • businessEntity : provê informações a sobre a empresa que está publicando o serviço. Contém um ou mais elementos businessService; • businessService: representa um serviço provido pela businessEntity; • Cada entidade é identificada por uma chave única, permitindo que haja referências a serviços, definições WSDL;
Internet WSDL WSDL WSDL WSDL João agora pode encontrar outros Fornecedores através de um serviço UDDI. UDDI Service Registram-se Fornecedores XYZ Busca novos fornecedores << SOAP >> Fornecedor A Café Expresso Ltda. << SOAP >> Fornecedor B << SOAP >> Fornecedor C
Internet WSDL WSDL WSDL WSDL João agora pode encontrar outros Fornecedores através de um serviço UDDI. UDDI Service Registram-se Fornecedores XYZ Comunica-se com novos fornecedores <<SOAP>> << SOAP >> Fornecedor A Café Expresso Ltda. << SOAP >> Fornecedor B << SOAP >> Fornecedor C
Ferramentas - Como desenvolver Web Services? • Ferramentas da Sun • JWSDP com muitas APIs: • JAXP, JAXB, JAX-RPC, SAAJ, JAXR, JWSDL • Ferramentas da IBM • Ferramentas da Microsoft (.NET) • Ferramentas da Apache • Axis do projeto Apache • WSDL2Java converte WSDL para Java
Exemplo com Axis • Usando JWS • Criando um serviço de soma e subtração de números • Recursos: • Axis • Apache Tomcat 5.x • Eclipse 3.1 • Plugin do Eclipse: Lavadorahttp://lavadora.sourceforge.net/
Passo a passo (1) • Passo 1: Download Axis • http://ws.apache.org/axis/ • Passo 2: Crie contexto Axis no Tomcat • Copie (...)/axis/webapps/axis para o diretório webapps do Tomcat • Passo 3: Inicie o Tomcat e teste a instalação do Axis • Acesse: http://localhost:8080/axis/happyaxis.jsp • Corrija as dependências • Passo 4: Crie o WebService • Crie uma classe Java, altere a extensão de .java para .jws • Copie o jws para o contexto do Axis, no tomcat
Passo a passo (2) • Passo 5: Acesse o WSDL do webservice gerado • http://localhost:8080/axis/Calculator.jws?wsdl • Passo 6: Instale o plugin do Eclipse • Download: http://lavadora.sourceforge.net • Descompacte no diretório onde seu Eclipse está instalado • Passo 7: Crie o cliente para acessar o serviço • No Eclipse: File -> New -> WebServices-> Web Service Client • Digite o caminho do wsdl do seu serviço:http://localhost:8080/axis/Calculator.jws?wsdl • Passo 8: Execute o cliente e acesse o webservice • Veja código no próximo slide
Passo a passo (3) • Código do cliente public static void main(String[] args) { try { CalculatorServiceLocator locator = new CalculatorServiceLocator(); Calculator calc = locator.getCalculator(); System.out.println(calc.add(10,5)); } catch (ServiceException e) { } catch (RemoteException e) { } }
Conclusões • João não foi despedido João com seu salário
Conclusões • O chefe de João conseguiu barrar a concorrência..
Fontes de consulta • Axis User’s Guidehttp://ws.apache.org/axis/java/user-guide.html • http://java.sun.com/webservices • developers.ibm.com/webservices • JavaWorld: www.javaworld.com • webservices.org • www.uddi.org • xml.apache.org
Obrigado!! Rodrigo Rebouças de Almeida rodrigor@rodrigor.com http://rodrigor.com