260 likes | 326 Views
Explore problematic scenarios and solutions using Web Services for automated systems, SCM, and Google searches. Understand XML, SOAP, WSDL, UDDI, and HTTP bindings to facilitate communication and integration across different platforms.
E N D
Web ServicesUma Introdução Jacques P. Sauvé DSC/UFCG 2003
Resumo • Cenários problemáticos (45 m) • Uma solução: Web Services (60 m) • Um exemplo (45 m) • Ferramentas (15 m)
Cenários Problemáticos • Vamos tentar bolar soluções para aplicações corporativas avançadas • Cenário 1: Portal de Turismo • Cenário 2: Compra Automática • Cenário 3: Supply Chain Management • Cenário 4: Pesquisa Google via Programa
Cenário 1: Portal de Turismo • Implemente um portal realmente automático em que: • O cliente lista seus desejos via HTML • O portal • pesquisa alternativas • escolhe as melhores • faz todas as reservas • fatura o cartão de crédito do cliente • efetua todos os pagamentos • ... automaticamente, sem intervenção humana • Queremos que programasnaveguem na Web, não só humanos
Cenário 2: Compra automática • Implemente uma aplicação para um distribuidor regional de remédios que: • Automaticamente detecte estoque baixo • Procure o melhor lugar no mundo para comprar os produtos • Preço, prazo de entrega, etc. • Emita a ordem de compra eletronicamente
Cenário 3: Supply Chain Management • Implemente aplicações de SCM que integrem sistemas de várias empresas (fornecedores, parceiros, clientes, ...)
Cenário 4: Pesquisa Google via Programa • Escreva um programa que recupere as primeiras 10 ocorrências de “web services” retornadas pelo Google
Características comuns aos cenários • Todos são sistemas distribuídos • Todos funcionam na Internet • Vários envolvem achar (navegar) o que se quer antes de usar • Todos envolvem domínios administrativosdiferentes (empresas diferentes) • Não temos controle sobre a plataforma, linguagem, etc. do outro lado • O outro lado é essencialmente um sistema legado no qual não podemos mexer
Problemas técnicos resultantes • Como trocar informação em ambiente heterogêneo para que ambos os lados entendam? • Como acessar a funcionalidade remota? • Como achar o “outro lado”? • Como driblar firewalls na comunicação?
Uma Solução – Web Services • Como trocar informação em ambiente heterogêneo para que ambos os lados entendam? • Usar XML para toda a comunicação • Usar SOAP fazer RPC • Como saber que “métodos” podem ser chamados e com que parâmetros? • Usar uma arquitetura orientada a serviços • Descrever o serviço remoto usando WSDL • Definir ontologias • Como achar o “outro lado”? • Usar UDDI para localizar serviços • Como driblar firewalls na comunicação? • Usar binding de SOAP para HTTP
Usar uma arquitetura orientada a serviços • Serviço oferece uma API na Internet
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
Descrição WSDL inclui • Descrição/formato de mensagens que podem ser passadas • Elementos <types>, <message> • Semântica da passagem de mensagens (Request-only, request-response, response-only) • Dentro do elemento <portType> • Uma codificação usando um transporte particular • Elemento <binding> • O endpoint do serviço (uma URL) • Dentro do elemento <service> • Veremos um exemplo logo
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 • Oasis
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 • Não usaremos UDDI no exemplo que segue
Usar binding de SOAP para HTTP • O binding sobre HTTP, SMTP, etc. permite driblar firewalls com mais facilidade • Qualquer outro protocolo de transporte pode ser usado
Finalmente ... 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
Um Exemplo – Google • http://www.google.com/apis/ contém tudo que você precisa para acessar o Google como Web Service • Primeiro, vamos rodar o exemplo • Execute o comando: • go “web services” • Compare a saída com o uso do Google pelo browser • (se você não estiver na Web, veja resultados em google\resultados-search)
Google - WSDL • Examine GoogleSearch.wsdl • Preste atenção aos elementos • <type> e <message> (formatos) • <portType> (define 3 operações ou “métodos”) • <binding> (usa SOAP sobre HTTP) • <service> (URL para obter serviço)
Google – main • Examine o programa GoogleAPIDemo.java • Mostra como usar a classe GoogleSearch para acessar o Web Service
Ferramentas - Como desenvolver Web Services? • Tem ferramentas da Sun • JWSDP com muitas APIs: • JAXP, JAXB, JAX-RPC, SAAJ, JAXR, JWSDL • Tem ferramentas da IBM • Tem ferramentas da Microsoft (.NET) • Tem ferramentas de outros lugares • Axis do projeto Apache • WSDL2Java converte WSDL para Java • SOAP::Lite para Perl • etc.