DXC Proprietary and Confidential May 5, 2017
Web Services
Norberto Enomoto
norberto.enomoto@dxc.com
Integration / SOA Architect
May 5, 2017 2DXC Proprietary and Confidential
Agenda
1. O que é um Web Services?
2. Arquitetura de um Web Services
3. WSDL – Web Services Definition Language
4. Protocolo SOAP
5. Abordagens para desenvolvimento de um Web
Services: Bottom Up e Top Down
6. Exemplo de um Web Services utilizando
JDeveloper 12c
7. Referências
May 5, 2017 3DXC Proprietary and Confidential
O que é um Web Services?
Web services é uma solução utilizada na integração de sistemas e na comunicação entre
aplicações diferentes. Com esta tecnologia é possível que novas aplicações possam
interagir com aquelas que já existem e que sistemas desenvolvidos em plataformas
diferentes sejam compatíveis. Wikipedia
May 5, 2017 4DXC Proprietary and Confidential
Arquitetura de um Web Services
May 5, 2017 5DXC Proprietary and Confidential
WSDL – Web Services Definition Language
A WSDL é uma especificação que permite descrever um Web Services segundo um formato XML.
Um documento WSDL é um documento XML que descreve Web Services como um conjunto de pontos de
serviço (endpoints) que operam baseados em trocas de mensagens.
WSDL é uma linguagem extensível e permite a descrição de pontos de serviço e suas mensagens
independentemente de que formato de mensagens ou protocolo de rede é utilizado na comunicação.
Através da descrição do Web Services o provedor de serviços publica as especificações necessárias para o
cliente invocar um serviço – Contrato
O cliente não precisa saber qual a linguagem do programação ou plataforma de execução em que o provedor
de serviços está baseado.
May 5, 2017 6DXC Proprietary and Confidential
Estrutura de um WSDL
O uso de WSDL na arquitetura de Web Services é em geral dividido em duas partes:
Interface do Serviço - Abstrata
Implementação do Serviço - Concreta
May 5, 2017 7DXC Proprietary and Confidential
Estrutura de um WSDL
May 5, 2017 8DXC Proprietary and Confidential
Interface do Serviço (Abstrata) - WSDL
Especificação de interface de serviço é uma descrição de serviço reutilizável que pode ser instanciada e
implementada por diferentes implementações de serviços.
Semelhante a IDL (CORBA).
May 5, 2017 9DXC Proprietary and Confidential
Elementos da Interface de Serviço - WSDL
types
Definem os tipos de dados que são utilizados para descrever as mensagens. Para melhor interoperabilidade e
independência de plataforma indica-se o uso de XSD (XML Schema Documents)
<wsdl:types>
<xsd:schema targetNamespace="http://benchresources.in/services/BookService/">
<xsd:import namespace=http://benchresources.in/entities/Book
schemaLocation="book.xsd" />
</xsd:schema>
</wsdl:types>
May 5, 2017 10DXC Proprietary and Confidential
Elementos da Interface de Serviço - WSDL
message
Representam uma definição abstrata dos dados que serão transmitidos. Uma mensagem é composta por
diferentes partes lógicas que estão associadas com uma definição contida em um sistema de tipos.
<wsdl:message name="BookRequest">
<wsdl:part element="book:BookRequestType" name="parameters" />
</wsdl:message>
<wsdl:message name="BookNameRequest">
<wsdl:part element="book:BookNameRequestType" name="parameters" />
</wsdl:message>
<wsdl:message name="BookResponse">
<wsdl:part element="book:BookResponseType" name="parameters" />
</wsdl:message>
May 5, 2017 11DXC Proprietary and Confidential
Elementos da Interface de Serviço - WSDL
portType
São conjuntos de operações abstratas, cada uma contendo mensagens de entrada e saída.
<wsdl:portType name="IBookService">
<wsdl:operation name="getBookByISDNRequestNumber">
<wsdl:input message="tns:BookRequest" />
<wsdl:output message="tns:BookResponse" />
</wsdl:operation>
<wsdl:operation name="getBookDetailsByBookName">
<wsdl:input message="tns:BookNameRequest" />
<wsdl:output message="tns:BookResponse" />
</wsdl:operation>
</wsdl:portType>
May 5, 2017 12DXC Proprietary and Confidential
Elementos da Interface de Serviço - WSDL
operation
Definição abstrata de uma ação que um serviço pode executar
<wsdl:portType name="IBookService">
<wsdl:operation name="getBookByISDNRequestNumber">
<wsdl:input message="tns:BookRequest" />
<wsdl:output message="tns:BookResponse" />
</wsdl:operation>
<wsdl:operation name="getBookDetailsByBookName">
<wsdl:input message="tns:BookNameRequest" />
<wsdl:output message="tns:BookResponse" />
</wsdl:operation>
</wsdl:portType>
May 5, 2017 13DXC Proprietary and Confidential
Implementação do Serviço (Concreta) - WSDL
A implementação de serviço descreve como uma interface particular é implementada por um determinado
provedor de serviços. Os elementos que fazem parte da implementação do serviço são ports e services.
May 5, 2017 14DXC Proprietary and Confidential
Implementação do Serviço (Concreta) - WSDL
binding
Especificam protocolos concretos além de especificações de formatação de dados para as operações e mensagens definidas em um tipo de porta
particular.
<wsdl:binding name="BookServiceSOAPBinding" type="tns:IBookService">
<soap:binding style="document"
transport="http://schemas.xmlsoap.org/soap/http" />
<wsdl:operation name="getBookByISDNRequestNumber">
<soap:operation soapAction="" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="getBookDetailsByBookName">
<soap:operation soapAction="" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
May 5, 2017 15DXC Proprietary and Confidential
Implementação do Serviço (Concreta) - WSDL
port
Especifica um endereço para uma ligação, definindo então um endpoint único.
<wsdl:service name="BookService">
<wsdl:port name="BookServicePort" binding="tns:BookServiceSOAPBinding">
<soap:address
location="http://localhost:8080/Metro-JAX-WS-Top-
Down/services/BookService" />
</wsdl:port>
</wsdl:service>
May 5, 2017 16DXC Proprietary and Confidential
Implementação do Serviço (Concreta) - WSDL
service
Modela um Web Service agregando um conjunto de portas relacionados entre si.
<wsdl:service name="BookService">
<wsdl:port name="BookServicePort" binding="tns:BookServiceSOAPBinding">
<soap:address
location="http://localhost:8080/Metro-JAX-WS-Top-
Down/services/BookService" />
</wsdl:port>
</wsdl:service>
May 5, 2017 17DXC Proprietary and Confidential
Protocolo SOAP
SOAP (Simple Object Access Protocol, em português Protocolo Simples de Acesso a
Objetos) é um protocolo para troca de informações estruturadas em uma plataforma
descentralizada e distribuída.
May 5, 2017 18DXC Proprietary and Confidential
Abordagens para desenvolvimento de um Web Services:
Bottom Up e Top Down
Bottom up (Contract Last): Top Down (Contract First)
May 5, 2017 19DXC Proprietary and Confidential
Abordagens para desenvolvimento de um Web Services:
Bottom Up e Top Down
Bottom Up - Contract Last
Desenvolvimento do Web Services é um pouco mais
rápido e fácil
A fase inicial é muito fácil de desenvolver, mas a
manutenção é difícil .
Top Down - Contract First
É mais fácil criar web services a partir de um WSDL do
que a abordagem Bottom Up
Tem a vantagem de vc especificar o XSD para usar no
arquivo WSDL
Definindo seu schema (XSD) em um arquivo separado
permite reutilizar esse arquivo em diferentes WSDL (
Reutilização)
May 5, 2017 20DXC Proprietary and Confidential
Exemplo de um Web Services utilizando JDeveloper 12c
Bottom Up
Top Down
http://docs.oracle.com/cd/E53569_01/tutorials/tut_web_services/tut_web_services.html
May 5, 2017 21DXC Proprietary and Confidential
Referências
www.safaribooks.com
Livros do Thomas Erl: https://www.safaribooksonline.com/library/view/web-service-contract/9780131360648/
http://soapatterns.org/introduction
DXC Proprietary and Confidential
Obrigado.

Web Services

  • 1.
    DXC Proprietary andConfidential May 5, 2017 Web Services Norberto Enomoto norberto.enomoto@dxc.com Integration / SOA Architect
  • 2.
    May 5, 20172DXC Proprietary and Confidential Agenda 1. O que é um Web Services? 2. Arquitetura de um Web Services 3. WSDL – Web Services Definition Language 4. Protocolo SOAP 5. Abordagens para desenvolvimento de um Web Services: Bottom Up e Top Down 6. Exemplo de um Web Services utilizando JDeveloper 12c 7. Referências
  • 3.
    May 5, 20173DXC Proprietary and Confidential O que é um Web Services? Web services é uma solução utilizada na integração de sistemas e na comunicação entre aplicações diferentes. Com esta tecnologia é possível que novas aplicações possam interagir com aquelas que já existem e que sistemas desenvolvidos em plataformas diferentes sejam compatíveis. Wikipedia
  • 4.
    May 5, 20174DXC Proprietary and Confidential Arquitetura de um Web Services
  • 5.
    May 5, 20175DXC Proprietary and Confidential WSDL – Web Services Definition Language A WSDL é uma especificação que permite descrever um Web Services segundo um formato XML. Um documento WSDL é um documento XML que descreve Web Services como um conjunto de pontos de serviço (endpoints) que operam baseados em trocas de mensagens. WSDL é uma linguagem extensível e permite a descrição de pontos de serviço e suas mensagens independentemente de que formato de mensagens ou protocolo de rede é utilizado na comunicação. Através da descrição do Web Services o provedor de serviços publica as especificações necessárias para o cliente invocar um serviço – Contrato O cliente não precisa saber qual a linguagem do programação ou plataforma de execução em que o provedor de serviços está baseado.
  • 6.
    May 5, 20176DXC Proprietary and Confidential Estrutura de um WSDL O uso de WSDL na arquitetura de Web Services é em geral dividido em duas partes: Interface do Serviço - Abstrata Implementação do Serviço - Concreta
  • 7.
    May 5, 20177DXC Proprietary and Confidential Estrutura de um WSDL
  • 8.
    May 5, 20178DXC Proprietary and Confidential Interface do Serviço (Abstrata) - WSDL Especificação de interface de serviço é uma descrição de serviço reutilizável que pode ser instanciada e implementada por diferentes implementações de serviços. Semelhante a IDL (CORBA).
  • 9.
    May 5, 20179DXC Proprietary and Confidential Elementos da Interface de Serviço - WSDL types Definem os tipos de dados que são utilizados para descrever as mensagens. Para melhor interoperabilidade e independência de plataforma indica-se o uso de XSD (XML Schema Documents) <wsdl:types> <xsd:schema targetNamespace="http://benchresources.in/services/BookService/"> <xsd:import namespace=http://benchresources.in/entities/Book schemaLocation="book.xsd" /> </xsd:schema> </wsdl:types>
  • 10.
    May 5, 201710DXC Proprietary and Confidential Elementos da Interface de Serviço - WSDL message Representam uma definição abstrata dos dados que serão transmitidos. Uma mensagem é composta por diferentes partes lógicas que estão associadas com uma definição contida em um sistema de tipos. <wsdl:message name="BookRequest"> <wsdl:part element="book:BookRequestType" name="parameters" /> </wsdl:message> <wsdl:message name="BookNameRequest"> <wsdl:part element="book:BookNameRequestType" name="parameters" /> </wsdl:message> <wsdl:message name="BookResponse"> <wsdl:part element="book:BookResponseType" name="parameters" /> </wsdl:message>
  • 11.
    May 5, 201711DXC Proprietary and Confidential Elementos da Interface de Serviço - WSDL portType São conjuntos de operações abstratas, cada uma contendo mensagens de entrada e saída. <wsdl:portType name="IBookService"> <wsdl:operation name="getBookByISDNRequestNumber"> <wsdl:input message="tns:BookRequest" /> <wsdl:output message="tns:BookResponse" /> </wsdl:operation> <wsdl:operation name="getBookDetailsByBookName"> <wsdl:input message="tns:BookNameRequest" /> <wsdl:output message="tns:BookResponse" /> </wsdl:operation> </wsdl:portType>
  • 12.
    May 5, 201712DXC Proprietary and Confidential Elementos da Interface de Serviço - WSDL operation Definição abstrata de uma ação que um serviço pode executar <wsdl:portType name="IBookService"> <wsdl:operation name="getBookByISDNRequestNumber"> <wsdl:input message="tns:BookRequest" /> <wsdl:output message="tns:BookResponse" /> </wsdl:operation> <wsdl:operation name="getBookDetailsByBookName"> <wsdl:input message="tns:BookNameRequest" /> <wsdl:output message="tns:BookResponse" /> </wsdl:operation> </wsdl:portType>
  • 13.
    May 5, 201713DXC Proprietary and Confidential Implementação do Serviço (Concreta) - WSDL A implementação de serviço descreve como uma interface particular é implementada por um determinado provedor de serviços. Os elementos que fazem parte da implementação do serviço são ports e services.
  • 14.
    May 5, 201714DXC Proprietary and Confidential Implementação do Serviço (Concreta) - WSDL binding Especificam protocolos concretos além de especificações de formatação de dados para as operações e mensagens definidas em um tipo de porta particular. <wsdl:binding name="BookServiceSOAPBinding" type="tns:IBookService"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" /> <wsdl:operation name="getBookByISDNRequestNumber"> <soap:operation soapAction="" /> <wsdl:input> <soap:body use="literal" /> </wsdl:input> <wsdl:output> <soap:body use="literal" /> </wsdl:output> </wsdl:operation> <wsdl:operation name="getBookDetailsByBookName"> <soap:operation soapAction="" /> <wsdl:input> <soap:body use="literal" /> </wsdl:input> <wsdl:output> <soap:body use="literal" /> </wsdl:output> </wsdl:operation> </wsdl:binding>
  • 15.
    May 5, 201715DXC Proprietary and Confidential Implementação do Serviço (Concreta) - WSDL port Especifica um endereço para uma ligação, definindo então um endpoint único. <wsdl:service name="BookService"> <wsdl:port name="BookServicePort" binding="tns:BookServiceSOAPBinding"> <soap:address location="http://localhost:8080/Metro-JAX-WS-Top- Down/services/BookService" /> </wsdl:port> </wsdl:service>
  • 16.
    May 5, 201716DXC Proprietary and Confidential Implementação do Serviço (Concreta) - WSDL service Modela um Web Service agregando um conjunto de portas relacionados entre si. <wsdl:service name="BookService"> <wsdl:port name="BookServicePort" binding="tns:BookServiceSOAPBinding"> <soap:address location="http://localhost:8080/Metro-JAX-WS-Top- Down/services/BookService" /> </wsdl:port> </wsdl:service>
  • 17.
    May 5, 201717DXC Proprietary and Confidential Protocolo SOAP SOAP (Simple Object Access Protocol, em português Protocolo Simples de Acesso a Objetos) é um protocolo para troca de informações estruturadas em uma plataforma descentralizada e distribuída.
  • 18.
    May 5, 201718DXC Proprietary and Confidential Abordagens para desenvolvimento de um Web Services: Bottom Up e Top Down Bottom up (Contract Last): Top Down (Contract First)
  • 19.
    May 5, 201719DXC Proprietary and Confidential Abordagens para desenvolvimento de um Web Services: Bottom Up e Top Down Bottom Up - Contract Last Desenvolvimento do Web Services é um pouco mais rápido e fácil A fase inicial é muito fácil de desenvolver, mas a manutenção é difícil . Top Down - Contract First É mais fácil criar web services a partir de um WSDL do que a abordagem Bottom Up Tem a vantagem de vc especificar o XSD para usar no arquivo WSDL Definindo seu schema (XSD) em um arquivo separado permite reutilizar esse arquivo em diferentes WSDL ( Reutilização)
  • 20.
    May 5, 201720DXC Proprietary and Confidential Exemplo de um Web Services utilizando JDeveloper 12c Bottom Up Top Down http://docs.oracle.com/cd/E53569_01/tutorials/tut_web_services/tut_web_services.html
  • 21.
    May 5, 201721DXC Proprietary and Confidential Referências www.safaribooks.com Livros do Thomas Erl: https://www.safaribooksonline.com/library/view/web-service-contract/9780131360648/ http://soapatterns.org/introduction
  • 22.
    DXC Proprietary andConfidential Obrigado.