Web Services: Conceitos e
Transações


   Ivan Neto



                            1
Roteiro

1.   O que são Web Services?
2.   Por que Web Services?
3.   Tecnologias básicas de Web Services
4.   Criando um Web Service
5.   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
                 Componente   <operation name=...>
  Resposta XML                <operation name=...>



                                                5
Exemplo de Web Service
                   envólucro

                           op1
 Requisição XML                   Objeto
                            ...
   Resposta XML                    Java
                          opn




        URL: http://www.meudominio.com.br/meuWebService


                                                    6
Mais exemplos de Web Services
                    envólucro

   Requisição XML           sp_1
                              ...   BD
     Resposta XML           sp_n



                    envólucro
                           op1
   Requisição XML
                             ...    EJB
     Resposta XML          opn

                                          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
        Proprietário
        Uma única implementação
    Java RMI
        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
       Independente de S.O., linguagem de programação
   Baseados em padrões abertos
   Grande apoio da indústria
       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?
                Web
                          CORBA       RMI
               Services
 Comunicação   SOAP        GIOP       JRMP
                          CORBA
 IDL           WSDL                   Java
                           IDL
                           Serviço    RMI
 Registro       UDDI
                          de nomes   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:
       WSDL
       Mapeamento XML      Java
   É preciso também escrever dois arquivos de
    configuração na mão:
       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    2PC   BusinessAgreement


CreateCoordination              Commit      Prepare
     Context         Register   Rollback    Commit
                                             Abort

                                                                 30
Fluxo de uma Transação
                                           WS-Atomic
              WS-Coordination
                                           Transaction
Cliente    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

Mac5700

  • 1.
    Web Services: Conceitose Transações Ivan Neto 1
  • 2.
    Roteiro 1. O que são Web Services? 2. Por que Web Services? 3. Tecnologias básicas de Web Services 4. Criando um Web Service 5. Transações para Web Services Previsão: aprox. 1h 2
  • 3.
    1. O quesão Web Services? 3
  • 4.
    O que sãoWeb Services? “Web Services” são uma tecnologia para computação distribuída baseada na Web. Mais uma!  OMG CORBA  Java RMI  Microsoft DCOM 4
  • 5.
    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 Componente <operation name=...> Resposta XML <operation name=...> 5
  • 6.
    Exemplo de WebService envólucro op1 Requisição XML Objeto ... Resposta XML Java opn URL: http://www.meudominio.com.br/meuWebService 6
  • 7.
    Mais exemplos deWeb Services envólucro Requisição XML sp_1 ... BD Resposta XML sp_n envólucro op1 Requisição XML ... EJB Resposta XML opn 7
  • 8.
    Alguns comentários  O formato das mensagens XML é padronizado (SOAP)  O formato de exposição da interface de um Web Service é padronizado (WSDL) 8
  • 9.
    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
  • 10.
    2. Por queWeb Services? 10
  • 11.
    Pontos fracos deoutras tecnologias  Microsoft DCOM  Proprietário  Uma única implementação  Java RMI  Só Java  OMG CORBA  Complexidade 11
  • 12.
    Web Services eCORBA  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
  • 13.
    O que WebServices têm de especial?  Interoperabilidade  Independente de S.O., linguagem de programação  Baseados em padrões abertos  Grande apoio da indústria  Parte da arquitetura J2EE  Microsoft (.NET)  Uso intenso de XML (amplamente difundido)  Integração B2B  Troca de documentos 13
  • 14.
    Desvantagens de WebServices 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
  • 15.
    3. Tecnologias básicasde Web Services 15
  • 16.
    O que umatecnologia para computação distribuída precisa? Web CORBA RMI Services Comunicação SOAP GIOP JRMP CORBA IDL WSDL Java IDL Serviço RMI Registro UDDI de nomes Registry 16
  • 17.
    Comunicação: Simple Object AccessProtocol (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
  • 18.
    Formato de umamensagem SOAP <?xml version="1.0" encoding="UTF-8"?> <Envelope> <Header> ... </Header> <Body> ... </Body> </Envelope> 18
  • 19.
    Chamada de métodoremoto (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
  • 20.
    Troca de documento <?xmlversion="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
  • 21.
    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
  • 22.
    Universal Description, Discovery andIntegration (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
  • 23.
    4. Criando umWeb Service 23
  • 24.
    Criando a ServiceEndpoint 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
  • 25.
    Escrever a implementação publicclass 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
  • 26.
    Gerar WSDL eMapeamento  A ferramenta wscompile do Java Web Services Developer Pack usa a interface para gerar:  WSDL  Mapeamento XML Java  É preciso também escrever dois arquivos de configuração na mão:  web.xml  webservices.xml  Daí é só empacotar tudo num arquivo .war 26
  • 27.
    5. Transações paraWeb Services 27
  • 28.
    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
  • 29.
    Especificações (1 de2)  BEA, IBM e Microsoft lançaram um trio de especificações:  WS-Coordination  WS-AtomicTransaction  WS-BusinessActivity 29
  • 30.
    Especificações (2 de2) WS-Coordination WS-AtomicTransaction WS-Business Activity Activation Registration Completion 2PC BusinessAgreement CreateCoordination Commit Prepare Context Register Rollback Commit Abort 30
  • 31.
    Fluxo de umaTransação WS-Atomic WS-Coordination Transaction Cliente 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
  • 32.
    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