1. DXC Proprietary and Confidential May 5, 2017
Web Services
Norberto Enomoto
norberto.enomoto@dxc.com
Integration / SOA Architect
2. 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
3. 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
4. May 5, 2017 4DXC Proprietary and Confidential
Arquitetura de um Web Services
5. 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.
6. 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
7. May 5, 2017 7DXC Proprietary and Confidential
Estrutura de um WSDL
8. 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).
9. 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>
10. 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>
11. 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>
12. 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>
13. 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.
14. 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>
15. 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>
16. 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>
17. 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.
18. 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)
19. 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)
20. 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
21. 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