View
227
Download
6
Category
Preview:
Citation preview
Web ServicesWeb Services
Equipe:Cláudia Brito Lyra Nunes da Silva
Clindemberg Mendes PatrícioLuiz Eugênio Fernandes TenórioMarcelo Faro do Amaral LemosMarco Antônio Costa Simões
Paula Geralda Barbosa CoelhoSimith
Tópicos Web Services CORBA e Web Services SOAP & WSDL UDDI WSFL ebXML
Web Services
Integração de Aplicações O desafio da interoperação entre
ambientes heterogêneos
Integração de Aplicações Diversidade de componentes
EJB, CORBA, DCOM ... Diversidade de linguagens
Java, C/C++, C# ... Firewalls Falta de padrões para
interoperação
Integração de Aplicações Definindo o formato para troca de
dados
Business-to-Business Aplicações se conhecem e
conversam entre si
Web Services Aplicações oferecem serviços que
podem ser acessados dinamicamente
Web Services Próxima geração de serviços baseados na
internet que utiliza padrões da indústria, como XML, SOAP, UDDI e ebXML, para conectar aplicações e provê novos serviços via Internet serviços mais robustos e integrados
Nova “onda” de componentes serviços como componentes reutilizáveis “blocos” que integrados produzirão novos
serviços
Web Services Definição
Modelo computacional distribuído fracamente acoplado utiliza mecanismos de transporte padrão (HTTP e
HTTPS) modelo de programação síncrona e assíncrona utiliza XML para o transporte de dados
Descrito através de metadados (XML) Localizável através de pesquisas em
diretórios de serviços
Web Services Service-oriented
paradigma de orientação a serviços Serviços inteligentes
coarse grained services Tecnologia
basicamente é XML sobre HTTP XML: porque o mercado concorda HTTP: livre acesso através de firewalls
Web Services A web “costumava” ter foco em
pessoas A web está se tornando um plataforma
A2A (application-to-application) B2B é um caso especial
Web Services é a plataforma computacional distribuída sobre a qual aplicações A2A serão construídas
Arquitetura Típica de uma Aplicação Web
Web Services
Web Services
EnterpriseServices Gateway
Firewall
Devices
Web/ApplicationServer
EnterpriseLegacySystem
EnterpriseMessagingSystem
BusinessPartner Workflow/
BusinessProcesses
EnterpriseClient
as service
as service
as service
as service
as service
as service
as service
Web Services
ServiceProvider
Services Broker
Services Gateway
WebServer
ApplicationServer
EnterpriseLegacySystem
EnterpriseMessagingSystem
Workflow/BusinessProcesses
ServiceRequester
Services Gateway
WebServer
ApplicationServer
EnterpriseLegacySystem
EnterpriseMessagingSystem
Workflow/BusinessProcesses
ServiceProvider
ServiceRequester
needwidget
providewidget
Web Services pode ser visto como middleware ?
Tecnologias Web Services Any technology-service paradigm Tipicamente
SOAP: transporte de dados (XML/HTTP)
WSDL: descrição dos serviços UDDI: registro e busca de serviços ebXML: framework para e-commerce WSFL: composição de Web Services
SOAP Simple Object Access Protocol Modelo de mensagens independente do
protocolo de transporte suporte para HTTP
Modelo de codificação para tipos do sistema exemplo: XML para objetos Java, e vice-versa
RPC sobre HTTP
WSDL Web Services Definition Language Provê descrição funcional de serviços
IDL description Protocol and deployment details
idealmente deveria provê todas as informações necessárias para acessar o serviço (programaticamente)
Machine-readable description
UDDI Universal Description, Discovery
and Integration Coleção de diretórios (peers) que
contém informações sobre negócios e serviços
Conjunto de especificações baseadas em padrões para a descrição e pesquisa de serviços
UDDI
WSFL Web Services Flow Language Composição de Web Services
controle do fluxo de mensagens Construída sobre WSDL Modelos de utilização
Flow Model compõe serviços existentes em novos serviços,
definindo o workflow entre os serviços compostos Global Model
descreve a interação entre serviços sem definir a função (serviço) composto
Web Services Papéis
Service provider Service broker Service requester
Operations Publish Find Bind
Business Web Novo tipo de aplicação
Business Web É um Web Services composto por
outros Web Services
Business Web
Que tipos de aplicações utilizarão Web Services?
Web Services Benefícios
baixo acoplamento entre aplicações evolução independente de aplicações B2B a baixo custo (reuso) EAI (Enterprise Application Integration) não
intrusiva diversidade de componentes não afeta
interoperabilidade diversidade de linguagens não afeta
interoperabilidade padronização (futura)dos mecanismos de
interoperação
Web Services em Java
Web Services em Java Estende HTTP e Servlets/JSP para
suportar “program-to-program” ou “business-to-business”
(Re)utiliza a infra-estrutura J2EE
WebServices Pack Empacotamento de todas as
tecnologias necessárias para o desenvolvimento de web services
WebService Pack
Java Server Faces
JAX Pack
JSP TagLibrary
Tomcat
Web Services Companhias estão anunciando sua
estratégia para Web Services IBM, Sun, Oracle, HP, ... duas plataformas devem dominar o mercado: a
plataforma Java e .NET Novos servidores de aplicação já oferecem
soluções para o desenvolvimento de web services WebSphere 4.0 (IBM) WebLogic 6.1 (BEA) ...
Web Services Considerações
operações precisam ser restringidas por mecanismos de segurança negociáveis
Encriptação, autenticação, autorização ... requer padrões bem definidos e
largamente adotados performance
Transformação XML <-> 0101010
Web Services Conclusão
é uma forma nova de utilizar tecnologias e conceitos já existentes
viabilizada pelo contexto tecnológico e comercial atual
CORBA e Web Services
CORBA e Web ServicesCORBA e Web Services• Características benéficas a integração:
• Web Services:• Um middleware para middleware• Pode ser utilizado com um middleware existente (ex.
COM/DCOM, J2EE, CORBA)• CORBA:
• Uma arquitetura aberta composta de ~42 interfaces definidas para serviços horizontais e verticais
• Independência de protocolo de aplicação com a utilização de mapeamentos para GIOP
CORBA e Web ServicesCORBA e Web Services• Possíveis cenários de integração:
• Implementando objetos CORBA utilizando Web Services;
• Implementando Web Services utilizando objetos CORBA;
• Expondo objetos CORBA como Web Services;
CORBA e Web ServicesCORBA e Web Services• Implementado objetos CORBA usando
Web Services:
CORBA e Web ServicesCORBA e Web Services• Implementado Web Services usando
objetos CORBA:
CORBA e Web ServicesCORBA e Web Services• Expondo objetos CORBA como Web Services:
CORBA e Web ServicesCORBA e Web Services
GIOP/IIOP SOAP/HTTPCodificação das mensagens
- CDR- Menor tamanho (sintaxe binária)
- XML- Maior legibilidade * (sintaxe texto)
Complexidade de empacotamento
- Simples/Média - Complicado- Devido ao uso de parsers XML
Suportado na Internet
- Tráfego não permitido na maioria dos firewalls
- Utiliza protocolos de aplicação conhecidos na Internet (ex. HTTP)
Interoperabilidade com middlewares existentes
- Utilizando outros mapeamentos (ex. DCE CIOP)- Utilizando bridges (ex. DCOM)
- Mapeamento mais simples- Ubiquitous industry support
• Comparação entre protocolos de transporte:
SOAP
SOAP – Simple Object SOAP – Simple Object Access ProtocolAccess Protocol
• Definição: É um protocolo que descreve
mensagens trocadas entre processos, chamadas remotas a métodos e padrões para transporte via HTTP.
Baseado em XML Se propõe a desempenhar o mesmo
papel do IIOP (padrão CORBA), ORPC (padrão DCOM) e JRMP(padrão Java RMI) para Sistemas Distribuídos na Internet.
Para que mais um Para que mais um protocolo ?protocolo ?
• SOAP é baseado em texto (XML) enquanto os demais protocolos (IIOP,JRMP,ORPC) são binários Vantagens: facilidade de depuração e maior
adaptabilidade aos firewalls Desvantagem: tamanho da mensagem SOAP
é bem maior que os protocolos binários podendo gerar perda de performance
• Padrão aberto e independente de plataforma
Arquitetura do SOAP• Um envelope que descreve o
conteúdo da mensagem e como processá-la
• Um conjunto de regras de codificação que descrevem como os tipos de dados definidos na aplicação são serializados
• Uma convenção para representar chamadas remotas a métodos (RPC) e suas respostas
Exemplo de Mensagem SOAP
<SOAP-ENV:Envelopexmlns:SOAP-ENV=“http://schemas.xmlsoap.org/soap/envelope/”xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”xmlns:xsd=“http://www.w3.org/2001/XMLSchema”<SOAP-ENV:Header></SOAP-ENV:Header><SOAP-ENV:Body></SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Exemplo: SOAP Body<SOAP-ENV:Body>
<ns1:sayHelloToxmlns:ns1=“Hello”SOAP-ENV:encodingStyle=“http://
schemas.xmlsoap.org/soap/encoding/”><name
xsi:type=“xsd:string”>Maria</name></ns1:sayHelloTo>
<SOAP-ENV:Body>
Implementando um Web Service SOAP
• A Especificação SOAP restringe-se aos detalhes da mensagem que é trocada entre os processos
• Não há qualquer padronização quanto às API’s para implementar Serviços ou clientes
• Existem uma série de ferramentas disponíveis: MS SOAP Toolkit, IBM WSTK, Apache-SOAP, GLUE, etc
Pré-Requisitos• O requisito básico é possuir um
Servidor Web com suporte para servlets
• O Serviço pode ser implementado em diversas linguagens de programação e de script
• Tomando Java como exemplo, um serviço é uma classe Java comum sem qualquer alteração adicional
Exemplo de Serviçopublic class HelloServer {
public String sayHelloTo(String nome){
return "Ola "+nome+", como vai ?";}public String sayHelloTo(Name nome) {
return "Ola "+nome.getName()+", como vai ?";
}}
O Cliente• O mesmo serviço pode ser publicado
utilizando ferramentas de apoio diferentes sem sofrer qualquer alteração.
• O Cliente, entretanto, pode mudar bastante entre pacotes diferentes.
• A seguir será exemplificado um cliente para o serviço anterior usando o Apache-SOAP e outro utilizando o GLUE.
Cliente Apache-SOAPCall call = new Call();call.setTargetObjectURI("urn:Hello");call.setMethodName("sayHelloTo");call.setEncodingStyleURI(Constants.NS_URI_SOA
P_ENC);Vector params = new Vector();params.addElement(new
Parameter("nome",String.class,nome,null));call.setParams(params);
Cliente Apache-SOAPResponse resp = null;try { resp = call.invoke(url,""); }...Parameter ret = resp.getReturnValue();Object value = ret.getValue();System.out.println(value);
Cliente GLUE IHelloServerService server =
HelloServerHelper.bind(); System.out.println(server.sayHelloTo(“Maria”));• A interface IHelloServerService pode ser gerada com
o utilitário wsdl2java fornecido junto com o pacote;• O mesmo utilitário gera também a classe
HelloServerHelper. • O GLUE exige que o Serviço publique a sua interface
WSDL para que o cliente utilize como base• Se o serviço for publicado utilizando o Servidor Web
do próprio GLUE, este gera o WSDL dinamicamente
Tratamento de Exceções
• A Especificação SOAP prevê que os métodos remotos retornem Exceções para os clientes através do rótulo <Fault>
• Ou seja, qualquer exceção lançada pelo Serviço será convertida em uma seção <Fault> no envelope SOAP de resposta
Tratamento de Exceções
• Da mesma forma que a API do cliente não é padronizada, a forma como as exceções serão capturadas e tratadas também não é estabelecida
• No Apache-SOAP, o Fault é extraído do objeto Response que é retornado
• No GLUE, deve ser capturada uma exceção WrappedException que contém uma SOAPException encapsulada contendo as informações do Fault
WSDL
WSDL – Web Services WSDL – Web Services Description LanguageDescription Language
• Definição: É a especificação publicada para um
diretório UDDI(Universal Description Discovery).
Tem uma interface e implementação de detalhes específicos dos serviços da Web disponíveis e dos respectivos proprietários
Baseada em XML, descreve a interface, protocolos, ligações, detalhes de visualização, tipos de dados e localização
A Dupla SOAP e WSDLA Dupla SOAP e WSDL• O SOAP foi criado pela Microsoft/IBM• O WSDL foi criado para descrever os
contratos(interfaces) dos serviços WEB invocados através do SOAP
• Estes contratos de serviços indicam à aplicação que pretende chamar os serviços, quais são as suas interfaces, incluindo parâmetros de chamada e retorno
• Resolvem os problemas de interoperabilidade das plataformas, mas o aspecto dinâmico ainda não foi inteiramente solucionado
IDL (Interface Definition Language)
• Definida juntamente com o CORBA 1.1 em 1991
• Descreve as interfaces que são chamadas pelos clientes e fornecidas pelas implementações
• O mapeamento IDL foi estabelecido primeiramente com a utilização da linguagem C++
IDL X WSDL Padrão de
MapeamentoSIM NÃO
Protocolo de Mensagens
IIOP SOAP
Registro dos Serviços - UDDIFornece Localização (URL)
NÃO SIM
Complexidade de Programação
NÃO SIM
Exemplo de IDL UMA INTERFACE SIMPLES CONTENDO UMA OPERAÇÃO:
Module Exmodule { structure ExStuct{ short structMember1; float structMember2; }; exception ExException{ string excepMember1; long excepMember2; }; interface Exinterface { string ExOp( in long inParam1, out float outParam2, inout Exstruct
inoutParam3)raises(ExException);
};}
Mapeamento o Exemplo de IDL -> WSDL
<?xml version=”1.0” ?><wsdl:definitions
name=”ExInterfaceService” (1)targetNamespace =” http://example.com/Exmodule/ExInterface.wsdl”
xmlns:tns=”http://example.com/ExModule/ExInterface.wsdl” (2)xmlns:xds=”http://www.w3.org/2000/10/XMLSchema” (3)
xmlns:defs=”http://example.com/ExModule/definitions” (4)xmlns:soap=”http://schemas.xmlsoap.org/wsdl/soap” (5)xmlns:scoap=” http://schemas.omg.org/scoap/encoding” (6)xmlns:wsdl=”http://schemas.xmlsoap.org/wsdl/” (7)
<wsdl:importnamespace = “ http:// schemas.omg.org/scoap/encoding” (8)location=”http: //localhost/schemas/omg/scoap.xsd “ />
<wsdl:importnamespace = “ http:// example.com/ExModule/chemas” (9)location=”http: //localhost/schemas/ExModule/ExModule.xsd “ />
<wsdl:message name = “ ExException” (10)<wsdl:part name=”Exception” type=”defs:ExException” /></wsdl:message>
Mapeamento IDL -> WSDL
<wsdl:message name = “ ExOpInput” (11)<wsdl:part name=”InParam1” type=”scoap:long” />
<wsdl:part name=”InoutParam3” type=”defs:ExStruct” /></wsdl:message>
<wsdl:message name = “ ExOpOutput” (12)<wsdl:part name=”_return” type=”scoap:string” />
<wsdl:part name=”OutParam2” type=”scoap:float” /><wsdl:part name=”InoutParam3” type=”defs:ExStruct” />
</wsdl:message><wsdl:message name = “ InterfaceType” (13)
<wsdl:part name=”RepID” type=”defs:ExInterfaceRepId” /></wsdl:message>
<wsdl:porttype name = “ ExInterface” (14)<wsdl:operationname=”ExOp” /> (15)
parameterOrder = “inParam1 outParam2 inoutParam3” ><wsdl:input message=”tns:ExOpInput” />
<wsdl:output message=”tns:ExOpOutput” /><wsdl:fault message=”tns:ExException” /></wsdl:operation>
</wsdl:portType>
WSDL
UDDI
UDDI(Universal Description, Discovery and Integration) Permite informações sobre negócio e
serviços sejam eletronicamente publicadas e consultadas. “Register once, published everywhere”
Define como os negócios interagem sobre a internet e compartilham informações em uma arquitetura de registro global.
É um framework para integração de Web Services.
UDDI Project(www.uddi.org) participam a IBM, Microsoft e Ariba.
UDDI(continuação) UDDI é uma especificação global. Toda
empresa espalhada pelo mundo é capaz de se registrar em um UDDI Business Registry.
Business Registry implementa a especificação UDDI.
Nos Registries ocorre uma sincronização de seus conteúdos regularmente.
Permissões de acesso – Somente o usuário com as credenciais que conferem com as credenciais usadas para criação dos registros.
Benefícios imediatos de UDDI A capacidade de negócios rapidamente e
dinamicamente descobrir outros e interagir na internet.
Agregar valor aos serviços já fornecidos aos seus clientes.
Potencializar o crescimento do comércio B2B. Ressalva: A especificação UDDI ainda não foi
submetida a organizações de padronização. A versão utilizada pelos desenvolvedores é a 1.0(Draft).
UDDI Informação fornecida a um registro
UDDI consiste de três componentes: White pages
Informações de contato da empresa. Yellow pages
Categorização dos serviços pela taxonomia padrão. Green pages
Informações técnicas sobre o serviço exposto(regras de negócio, descrição do serviço,...)
UDDI Define quatro elementos básicos:
businessEntityPossui as descrições e informações técnicas
dos serviços. Cada businessEntity possui uma única chave que identifica o negócio/dado (Modela a informação de negócio).
businessServiceRepresenta os serviços ou processos de
negócio fornecidos pelo businessEntity (Definição de alto-nível dos serviços).
UDDI(elementos)
bindingTemplate Apresenta os dados que descrevem as
características técnicas de uma dada implementação de serviço(Mapeamento entre businessService e tModel).
tModel Modela um tipo de tecnologia ou
serviço.
UDDI(elementos)
Implementações de UDDI jUDDI(“judy”)
Desenvolvida pela Bowstreet. Foi uma das primeiras
implementações de UDDI. Uddi4J
Desenvolvida pela IBM. Está presente IBM WSTK 2.1(Web
Service Toolkit).
WSFL
WSFL Web Service Flow Language
Definição Modelo de fluxo Modelo global
Processo Negócio
Modelo de Fluxo<flowModel name="bookTickets" serviceProviderType="airlineFlow">
<flowSource name="ticketFlowSource"> <output name="processInstanceData"
message="tio:receivedTicketOrder"/> </flowSource>
<serviceProvider name="agent" type="agentType"/> <serviceProvider name="traveler" type="travelerType"/>
<activity name="reserveSeats"> <input name="reserveSeatsInput" message="tio:receivedTicketOrder"/> <output name="reserveSeatsOutput" message="tio:reservation"/> <performedBy serviceProvider="local"/> <implement> <internal> <!-- .. call to credit card service .. --> </internal> </implement> </activity>
Modelo Global<globalModel name="bookTripNTickets" serviceproviderType="agentType"> <serviceProvider name="travelAgent"
serviceProviderType="tio:agentType"> <export> <source portType="tio:tripHandler" operation="sendItinerary"/> <target portType="tio:tripNTicketHandler"
operation="sendItinerary"/> </export> <export> <source portType="tio:tripHandler" operation="receiveTripOrder"/> <target portType="tio:tripNTicketHandler"
operation="receiveTripOrder"/> </export> <locator type="static" service="abc:agent"/> <locator type="uddi" bindTime="startup" selectionPolicy="first"> <uddi-api:find_service businessKey="uuid_key" generic="1.0" xmlns:uddi-api="urn:uddi-org:api"> </uddi-api:find_service> </locator> </serviceProvider>
ebXML
ebXMLebXML• Definição:
Conjunto de especificações que juntas possibilitamum framework para comércio eletrônico.
• Objetivo:Prover uma infraestrutura aberta baseada emXML, possibilitando a prática global do comércioeletrônico de uma forma consistente, segura einteroperável por todas as partes.
ebXMLebXML• A que se propõe:
Criar padrões para definir: Transações comuns de negócios Formatos comuns de troca de dados Um mecanismo que possibilite descrever o perfil
das companhias Um mecanismo que permita organizações
descobrirem outras companhias e ter acesso ao seu perfil
ebXMLebXML Um mecanismo que permita duas organizações
estabelecerem acordos (contratos) antes de iniciarem as transações
Um mecanismo de transporte comum para a troca de mensagens entre as organizações
Um framework seguro e confiável
ebXMLebXMLComponentesComponentes
• ebXML Registry and Repository Meio de compartilhar informação entre empresasRegistry: Serviço similar ao UDDIRepository: Armazena informações de
como a empresa trabalha:
processos, documentos e perfis de negócio
ebXMLebXMLComponentesComponentes
• CPP (Collaboration Protocol Profile) Descreve o Web service (nome do serviço, parâmetros requeridos, forma de acessá-lo) Permite a empresa descrever o seu perfil
• CPA (Collaborative Partner Agreement) Acordo estabelecido entre duas organizções Baseado no CPP de ambas Adminstra as transações entre elas
ebXMLebXMLComponentesComponentes
• ebXML Messaging Service Qualquer transporte pode ser usado Qualquer tipo de informação pode ser
roteada
ebXMLebXML(Visão geral de um sistema
ebXML))• Fase de implementação
Durante essa fase a organização deve: Solicitar as especificações ebXML e entendê-las
Implementar um sistema ebXML
Publicar seu perfil (CPP) de negócio no repositório ebXML, permitindo que outras organizações o acesse.
ebXMLebXML(Visão geral de um sistema
ebXML))• Fase de implementação
ebXMLebXML(Visão geral de um sistema
ebXML))• Fase de negociação
Durante essa fase a organização deve: Recuperar do repositório ebXML o perfil de uma
organização com a qual ela pretende realizar negócios
Verificar se a organização provê os serviços que ela deseja
Enviar a organização um contrato (CPA)
ebXMLebXML(Visão geral de um sistema
ebXML))• Fase de negociação
ebXMLebXML(Visão geral de um sistema
ebXML))• Fase de transação
Depois que as duas organizações estiverem de acordo com o CPA as transações podem ser efetuadas. Essas transações consistem em mensagens ebXML, que são enviadas através do serviço de mensagens do padrão ebXML.
ebXMLebXML(Visão geral de um sistema
ebXML))• Fase de transação
ebXMLebXML(Visão geral de um sistema (Visão geral de um sistema
ebXML)ebXML)
Recommended