Web Services: Conceitos e Transações Ivan Neto 1 Roteiro 1. 2. 3. 4. 5. O que são Web Services? Por que Web Services? Tecnologias básicas de Web Services Criando um Web Service Transações para Web Services Previsão: aprox. 1h 2 1. O que são Web Services? 3 O que são Web Services? “Web Services” são uma tecnologia para computação distribuída baseada na Web. Mais uma! OMG CORBA Java RMI Microsoft DCOM 4 O que é um Web Service? Componente identificado por uma URI Invocações feitas usando XML Operações descritas em XML Protocolos de transporte: HTTP, SMTP, etc <? xml version=“1.0” ?> Requisição XML Resposta XML Componente <operation name=...> <operation name=...> 5 Exemplo de Web Service envólucro Requisição XML Resposta XML op1 ... opn Objeto Java URL: http://www.meudominio.com.br/meuWebService 6 Mais exemplos de Web Services envólucro Requisição XML Resposta XML sp_1 ... sp_n BD envólucro Requisição XML Resposta XML op1 ... opn EJB 7 Alguns comentários O formato das mensagens XML é padronizado (SOAP) O formato de exposição da interface de um Web Service é padronizado (WSDL) 8 Resumindo Web Services são componentes capazes de criar e processar mensagens SOAP SOAP Cliente Web Service SOAP <? xml version=“1.0” ?> <operation name=...> <operation name=...> 9 2. Por que Web Services? 10 Pontos fracos de outras tecnologias Microsoft DCOM Java RMI Proprietário Uma única implementação Só Java OMG CORBA Complexidade 11 Web Services e CORBA Web Services são uma nova maneira de fazer coisas que temos disponíveis em CORBA há anos CORBA é complexo Web Services também! 12 O que Web Services têm de especial? Interoperabilidade Baseados em padrões abertos Grande apoio da indústria Independente de S.O., linguagem de programação Parte da arquitetura J2EE Microsoft (.NET) Uso intenso de XML (amplamente difundido) Integração B2B Troca de documentos 13 Desvantagens de Web Services em relação a CORBA Uso de mensagens XML implica em um desempenho inferior CORBA é mais maduro Nem sempre XML é mais fácil de ler (WSDL x CORBA IDL) Implementações de SOAP ainda não são 100% compatíveis 14 3. Tecnologias básicas de Web Services 15 O que uma tecnologia para computação distribuída precisa? Comunicação IDL Registro Web Services CORBA RMI SOAP GIOP JRMP WSDL CORBA IDL Java UDDI Serviço de nomes RMI Registry 16 Comunicação: Simple Object Access Protocol (SOAP) Protocolo de comunicação entre Web Services Baseado em XML (textual) Independente de protocolo de transporte Protocolos disponibilizados: HTTP, SMTP, FTP, etc Mais comum: SOAP sobre HTTP Evita problemas com firewalls Permite chamadas de método remoto e troca de documentos 17 Formato de uma mensagem SOAP <?xml version="1.0" encoding="UTF-8"?> <Envelope> <Header> ... </Header> <Body> ... </Body> </Envelope> 18 Chamada de método remoto (RPC) <?xml version="1.0" encoding="UTF-8"?> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/” xmlns:xsd="http://www.w3.org/2001/XMLSchema xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <soapenv:Body> <ns1:setCounter xmlns:ns1="http://meuws.org/"> <int_1>100</int_1> </ns1:setCounter> </soapenv:Body> </soapenv:Envelope> 19 Troca de documento <?xml version="1.0" encoding="UTF-8"?> <soapenv:Envelope xmlns:soapenv=http://schemas.xmlsoap.org/soap/envelope/ xmlns:xsd=http://www.w3.org/2001/XMLSchema xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <soapenv:Body> <ns1:ListaDeCompras xmlns:ns1="http://meuws.org/"> <Item id=“1”/> <Item id=“1001”/> </ns1:ListaDeCompras> </soapenv:Body> </soapenv:Envelope> 20 Web Services Description Language (WSDL) Utilizado para definir as operações suportadas por um Web Service Equivalente a IDL (mas é baseado em XML) Define o endereço de um Web Service Clientes usam o WSDL para gerar um stub e interagir com o Web Service 21 Universal Description, Discovery and Integration (UDDI) Registro de Web Services Serviço de Nomes Permite publicação e descoberta de Web Services Funciona também como um serviços de negociação (trading service) 22 4. Criando um Web Service 23 Criando a Service Endpoint Interface (SEI) public interface Organization extends Remote { String getContactInfo(String organization) throws RemoteException; } Tem que estender Remote Todos os métodos lançam RemoteException 24 Escrever a implementação public class OrganizationJSEEndpoint implements Organization { public String getContactInfo(String org) { return "The '" + org + "' is currently out of office, please call again."; } } Implementa a operação da interface Organization 25 Gerar WSDL e Mapeamento A ferramenta wscompile do Java Web Services Developer Pack usa a interface para gerar: Java É preciso também escrever dois arquivos de configuração na mão: WSDL Mapeamento XML web.xml webservices.xml Daí é só empacotar tudo num arquivo .war 26 5. Transações para Web Services 27 Introdução Web Services definem duas categorias de transações Transações atômicas Muito parecida com CORBA Object Transaction Service (CORBA OTS) Transações distribuídas de longa duração 28 Especificações (1 de 2) BEA, IBM e Microsoft lançaram um trio de especificações: WS-Coordination WS-AtomicTransaction WS-BusinessActivity 29 Especificações (2 de 2) WS-Coordination WS-AtomicTransaction WS-Business Activity Activation Registration Completion CreateCoordination Context Register Commit Rollback 2PC BusinessAgreement Prepare Commit Abort 30 Fluxo de uma Transação WS-Atomic WS-Coordination Cliente Transaction Activation Registration Completion 2PC Web Service create ctx ctx register completion método de negócio (ctx) register 2PC registered 2PC resposta commit prepare prepared commit committed committed 31 Referências Alonso, G., Casati, F., Kuno, H., and Machiraju, V. Web Services: Concepts, Architectures, and Applications. Springer Verlag, 2003. Introduction to Web services and the WSDK V5.1 (www.ibm.com/developerWoks) Web Services and CORBA (www.xs4all.nl/~irmen/comp/CORBA_vs_SOAP.html) Introducing WS-Transactions, Arjuna Technology Report (http://www.arjuna.com/library/reports/) 32