O documento apresenta uma introdução sobre web services, incluindo sua arquitetura, WSDL, protocolo SOAP e abordagens de desenvolvimento bottom-up e top-down. Dois exemplos de web services usando JDeveloper 12c são descritos.
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