Estudo de caso:

45
© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com) Estudo de caso: Café Expresso Ltda. A estória de João...

description

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. - PowerPoint PPT Presentation

Transcript of Estudo de caso:

Page 1: Estudo de caso:

© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)

Estudo de caso:

Café Expresso Ltda.

A estória de João...

Page 2: Estudo de caso:

© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)

Café Expresso Ltda.

• Características:•Sistema de controle de vendas de café:

•Implementado em Delphi•Interface Windows p/ Desktop•Possui um SGBD

Page 3: Estudo de caso:

© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)

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!

Page 4: Estudo de caso:

© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)

Café Expresso Ltda.

Como vou integrar o sistema existente com

um novo módulo de acesso à Internet?

Terei que reescrever o

sistema em Java? ASP?

João pensa...

Page 5: Estudo de caso:

© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)

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!!!

Page 6: Estudo de caso:

© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)

Café Expresso Ltda.

João desesperado...

Já estou reescrevendo o

sistema em Java...

Pelo menos o sistema dos

fornecedores é escrito em

Java??

Page 7: Estudo de caso:

© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)

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!

Page 8: Estudo de caso:

© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)

Café Expresso Ltda.

Precisamos ajudar João...

Page 9: Estudo de caso:

Web Services

Rodrigo Rebouças de [email protected]

Parte 1 – Introdução

Page 10: Estudo de caso:

© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)

Arquiteturas - Histórico MainFrames

[ Dados + Lógica + Interface ]Mainframe

TerminalTerminal

Terminal

Terminal

Page 11: Estudo de caso:

© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)

Arquiteturas - Histórico Arquitetura Cliente-Servidor

Servidor c/ SGBD

[ Lógica + Interface ]

[ Dados ]PC

Cliente

PC

Cliente

PC

Cliente

PC

Cliente

Page 12: Estudo de caso:

© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)

Arquiteturas - Histórico Arquitetura em n-camadas

Browser Web

Browser Web

Internet

Servidor Web Servidor deAplicação

SGBD

[ Interface ] [ Dados ][ Lógica ]

Page 13: Estudo de caso:

© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)

O Problema de João...

PC

Cliente

PC

ClientePC

Cliente

PC

Cliente Servidor de Aplicação

Internet

Fornecedor A

Fornecedor B

Fornecedor C

Cliente

1. Integrar o sistema legado com um novo sistema

2. Integrar o sistema da empresa com os sistemas dos fornecedores A, B, C

12

Page 14: Estudo de caso:

© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)

Vamos tentar resolver o problema de João usando Web Services.

Page 15: Estudo de caso:

© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)

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

Page 16: Estudo de caso:

© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)

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.

Page 17: Estudo de caso:

© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)

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”

Page 18: Estudo de caso:

© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)

Usar SOAP fazer RPC SOAP é uma forma de fazer Remote Procedure Call (RPC)

usando documentos XML

Page 19: Estudo de caso:

© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)

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

Page 20: Estudo de caso:

© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)

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 (...)

Page 21: Estudo de caso:

© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)

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

Page 22: Estudo de caso:

© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)

Web services, Arquitetura

Serviçode diretório

Serviço cliente Provedorde serviço

1 - Registra-se2 - Buscaserviço

3 - Provê serviço

<< SOAP >>

<< SOAP >><< SOAP >>

Page 23: Estudo de caso:

© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)

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);

Page 24: Estudo de caso:

© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)

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!

Page 25: Estudo de caso:

© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)

SOAP

Page 26: Estudo de caso:

© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)

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>

Page 27: Estudo de caso:

© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)

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

Page 28: Estudo de caso:

© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)

PC

Cliente

PC

ClientePC

Cliente

PC

Cliente

Servidor de Aplicação

Internet

Parser XML

XML

SOAP

XML

HTML

Integração entre aplicações dentro de um domínio administrativo

Page 29: Estudo de caso:

© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)

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?

Page 30: Estudo de caso:

© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)

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.

Page 31: Estudo de caso:

© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)

Fornecedor A

Fornecedor B

Fornecedor C

WSDL

WSDL

WSDL

WSDL

InternetCafé Expresso Ltda.

<< SOAP >>

<< SOAP >>

<< SOAP >>

Resolvido o problema, agora João tem seuSistema integrado com os fornecedores.

Último detalhe... Como descobrirnovos fornecedores??

Page 32: Estudo de caso:

© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)

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.

Page 33: Estudo de caso:

© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)

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.

Page 34: Estudo de caso:

© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)

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;

Page 35: Estudo de caso:

© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)

Fornecedor A

Fornecedor B

Fornecedor C

WSDL

WSDL

WSDL

WSDLInternetCafé Expresso Ltda.

<< SOAP >>

<< SOAP >>

<< SOAP >>

João agora pode encontrar outrosFornecedores através de um serviço UDDI.

UDDI ServiceFornecedores XYZ

Registram-se

Busca novos fornecedores

Page 36: Estudo de caso:

© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)

Fornecedor A

Fornecedor B

Fornecedor C

WSDL

WSDL

WSDL

WSDLInternetCafé Expresso Ltda.

<< SOAP >>

<< SOAP >>

<< SOAP >>

João agora pode encontrar outrosFornecedores através de um serviço UDDI.

UDDI ServiceFornecedores XYZ

Registram-se

Comunica-se com novos fornecedores<<SOAP>>

Page 37: Estudo de caso:

© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)

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

Page 38: Estudo de caso:

© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)

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: Lavadora

http://lavadora.sourceforge.net/

Page 39: Estudo de caso:

© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)

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

Page 40: Estudo de caso:

© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)

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

Page 41: Estudo de caso:

© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)

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) { }

}

Page 42: Estudo de caso:

© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)

Conclusões João não foi despedido

João com seu salário

Page 43: Estudo de caso:

© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)

Conclusões O chefe de João conseguiu barrar a

concorrência..

Page 44: Estudo de caso:

© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)

Fontes de consulta Axis User’s Guide

http://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

Page 45: Estudo de caso:

© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)

Obrigado!!

Rodrigo Rebouças de [email protected]

http://rodrigor.com