You are on page 1of 25

WEB SERVICES

Uma visão geral da tecnologia

1
Definição

Web Service:
“Um web service é uma aplicação identificada por uma URI (Uniform
Resource Identifier), cujas interfaces públicas e características
são descritas e definidas utilizando XML. Estas definições podem
ser descobertas por outros sistemas. Estes sistemas podem,
então, interagir com o web service conforme prescrito por sua
definição, usando mensagens XML sobre protocolos Internet.”

Fonte: W3C Web Services Glossary


http://www.w3.org/TR/2002/WD-ws-gloss-20021114/

2
Aniversário de 10 anos da WWW
The Once and Future Web
Conferência realizada em dezembro de 2001 pela Stanford University

Technologies like mobile computing, peer-to-peer networking, ubiquitous wireless access and
intelligent software agents dramatically will change the way we interact with the web - as long
as big business doesn't strangle innovation for the sake of its own profits.

“Peer-to-peer is about the observation that everything is a server now.“


- Simon Phipps, chief software evangelist at Sun Microsystems.

“The future of communication is not about people talking to people. The future is machines talking
to other machines on people's behalf.“
- Paul Saffo, director of the Institute for the Future (www.iftf.org).

"Most of what we think of as 'surfing' will be done by machines. Instead of searching the web for
an Italian restaurant in San Francisco with a table available before 8 p.m., you might be able to
ask your software agent to do the job for you. If it finds a match, your agent could even - with
your approval - make reservations and print out a map telling you how to get there."
- Armando Fox, assistant professor of computer science at Stanford.

Fonte: Stanford Report, December 12, 2001


http://www.stanford.edu/dept/news/report/news/december12/futureweb-1212.html

3
A evolução da computação distribuída na internet

Browser
Web HTML Cliente
Server

Internet

• Toda a aplicação reside no servidor.


• Browsers apenas renderizam a informação sem que haja qualquer
processamento local.

4
A evolução da computação distribuída na internet

Browser
Web HTML Cliente
Server

CGI
Database

Internet

applet

• Browsers conseguem acessar dados de um database através de


CGIs rodando no web server.
• Browsers basicamente continuam sendo utilizados apenas para
apresentar informações. Quando muito, utilizam formulários html
para entrada de dados e processamento local bastante limitado via
applets java ou client side scripts (javascripts).
5
A evolução da computação distribuída na internet

Browser
Database Web HTML Cliente
server Server

Internet

• Surgem novas tecnologias bem mais poderosas e eficientes que os


CGIs, como o ASP, Java Servlets, PHP, dentre outras.
• Com o aumento do número de requisições, o acesso aos dados
passa a ser feito através de servidor dedicado, o database server.
• Algumas tecnologias client side, como o Activex da Microsoft,
permitem processamentos mais ricos no cliente. Com o tempo, a
proliferação de tecnologias proprietárias para processamento
6 distribuído levará a uma verdadeira “Torre de Babel”.
A evolução da computação distribuída na internet

HTML / XML / WML / ...

Database Web
server Server

Internet

• O número de dispositivos na web proliferou significativamente. A


forma de apresentar a informação varia de dispositivo para
dispositivo.
• Um novo padrão é criado visando solucionar os problemas de
publicação na web, o XML (eXtended Markup Language). Uma série
de padrões de mercado derivados do XML surgem como por
exemplo o XSL, SVG e o WML.
7
A evolução da computação distribuída na internet
HTML / XML / WML / ...
Aplicação C

Database Web
server Server Solução proprietária

Internet

Solução proprietária

EDI Rede EDI


Privada
Aplicação A Aplicação B

• Originalmente desenvolvido para suprir os desafios da publicação


eletrônica em larga escala, o XML mostrou-se muito adequado para
solucionar problemas de integração e troca de dados entre sistemas
heterogêneos.
8
A evolução da computação distribuída na internet
HTML / XML / WML / ...
Aplicação C

Database Web
server Server XML / HTTP

Internet

XML / HTTP XML / HTTP

Aplicação A Aplicação B

• A troca de dados entre sistemas via XML sobre HTTP/HTTPS trouxe


um grande avanço ao mundo da integração de sistemas.
• Ainda assim, a amarração entre as duas partes continua grande.
Pequenas mudanças na aplicação provedora do serviço pode
demandar grandes mudanças na aplicação cliente.
9
Limitações das Tecnologias Existentes
A finalidade de um web service não é novidade
Permitir que aplicações distribuídas compartilhem
lógica de negócio através de uma rede.

Tecnologias existentes como DCOM, RMI e CORBA resolvem alguns problemas de


integração mas sua escalabilidade é bastante limitada:
• Necessitam que tanto origem quanto destino utilizem a mesma tecnologia.
• Suporte a esses padrões é limitado – formatos proprietários.
• CORBA é um padrão aberto, porém cada vendor implementa de uma maneira
diferente.
• Implementação sobre estes padrões necessita de conhecimentos avançados e não
costuma ser simples.
• É possível integrar estas diferentes tecnologias através de mapeamento reverso de
seus componentes, mas esta é uma prática não recomendada e bastante
susceptível a falhas.
• Utilizam TCP/IP para comunicação, mas necessitam de acesso a portas restritas,
muitas vezes bloqueadas pelo firewall da rede por razões de segurança.
10
Web Services: vencendo as limitações
Para consumir um web service não é preciso saber nada sobre a plataforma, modelo
de objetos ou linguagem de programação utilizada para implementar o serviço. A
única coisa necessária é entender como enviar e receber mensagens SOAP.
Web services são implementation-non-specific, isto é, a lógica de aplicação pode ser
implementada por qualquer mecanismo que suporte XML.
Baseia-se em padrões abertos.
Utiliza protocolos padrões da web como o HTTP, UDP ou SMTP para transporte.
A utilização de protocolos como o HTTP e o uso de XML para formatar seus dados permite
a troca de dados entre sistemas através de portas seguramente liberadas por firewalls
além de usufruir de toda a infra estrutura de rede que a internet proporciona.
A união do XML e HTTP levou à formação do SOAP, Simple Object Access Protocol,
protocolo utilizado pelos web services para codificação e transmissão dos dados de
aplicação.
Tecnologias como o .NET permitem o desenvolvimento simples e rápido de web services
sem a necessidade de mergulhar fundo nos protocolos envolvidos.

Do ponto de vista do desenvolvedor, um web service é uma página “glorificada”


que mapeia automaticamente pedidos via http ou https a métodos de uma
linguagem de alto-nível.
11
Definição em outras palavras

Um web service é essencialmente um conjunto de funções


invocáveis via internet usando um protocolo aberto, no caso o
protocolo SOAP.

Glossário:

Simple Object Access Protocol (SOAP)


É um protocolo baseado em XML para a troca de informações em ambientes
distribuídos e descentralizados.

Extensible Markup Language (XML)


Formato padrão de arquivo texto simples e bastante flexível derivado do SGML.
Originalmente desenvolvido para suprir os desafios da publicação eletrônica em larga
escala, o XML acabou assumindo importância enorme na troca de dados dos mais
diversos tipos na web.

Standard Generalized Markup Language (SGML)


Padrão que deu origem ao HTML, XML, dentre outros.

12
Tipos de web services

Basicamente um web service pode ser de dois tipos

Document-oriented
Semelhante a EDI (Electronic Data Interchange)
Envia dados formatados como um documento do negócio
(por exemplo o envio de uma ordem de compra)

Remote Procedure Call (RPC)-oriented


Semelhante a CORBA, DCOM ou EJB
Envia dados formatados como argumento de uma
procedure ou invocação de um objeto
Retorna um resultado diretamente

13
As primeiras soluções: HTML / HTTP

HTML / HTTP HTML / HTTP


Internet

A aplicação client faz uma chamada programaticamente a uma URL de um web site,
Desvantagens
passando os parâmetros por HTTP-GET ou HTTP-POST.
A aplicação cliente funcionará apenas enquanto o documento HTML
O web server retorna um documento HTML contendo os dados que interessam a
permanecer estático. Uma alteração na formatação da página do web site
aplicação cliente misturados com conteúdo e formatação HTML.
quebrará a aplicação cliente.
A aplicação cliente faz o parser deste documento e extrai os dados que interessam
para seu próprio uso.

14
As primeiras soluções: XML / HTTP

XML / HTTP XML / HTTP


Internet

Uma aplicação server que expõe uma tabela do banco de dados em um arquivo XML
mediante uma chamada HTTP é implementada utilizando-se ASP, Java, Perl ou qualquer
outra linguagem de programação. Desvantagens
A aplicação
A aplicação cliente
client espera
faz uma um documento
chamada XML fortemente
programaticamente a umaestruturado. Uma
URL definida,
alteração
passando na aplicação
os parâmetros por server podeou
HTTP-GET quebrar a aplicação cliente.
HTTP-POST.
Na maioria
A aplicação dos retorna
server casos éumpossível utilizarXML
documento um contendo
schema XML público.
os dados deMas
umaquando
de suaso
número de aplicações é muito grande, a manutenção do conjunto de schemas
tabelas.
para cada aplicação pode se tornar inviável.
A aplicação cliente faz o parser destes dados para seu próprio uso utilizando
métodos apropriados para manipular o documento XML.

15
Outras Lacunas Comuns

Publicação do serviço
Uma vez que um serviço esteja disponível, como fazer
que um cliente consiga localizá-lo?

Descrição do serviço
Como deve ser feita a chamada a este serviço?
Que protocolos este serviço suporta?
Como este protocolo serializa os dados?
Que tipos de dados são suportados pelo serviço?

16
Completando As Lacunas
As especificações que estão sendo criadas para os web services recaem em três categorias:
Discovery
UDDI (Universal Description, Discovery and Integration)
UDDI é um protocolo que permite a publicação de um web service em um diretório
central de modo que ele possa ser facilmente localizado e consumido por outros
clientes.
Mais informações em http://www.UDDI.org
DISCO (abreviação de Discovery)
DISCO é um padrão usado para descrever o Uniform Resource Identifier (URI) de
um web service e contém a referência ao endereço do WSDL. É um arquivo em
formato XML e normalmente localiza-se na raiz da aplicação web.
Description
WSDL (Web Services Description Language)
Um arquivo baseado em XML usado para definir o comportamento de um web
service e como um cliente pode utilizar ou interagir com o serviço.
Mais informações em http://www.w3.org/TR/wsdl
Protocol
Como já vimos anteriormente, o SOAP é o protocolo baseado em XML utilizado
para serializar dados e objetos de um web service e que utiliza HTTP para o
17
transporte de dados.
Representação por camadas

Aplicação Aplicação
Aplicação Aplicação

Browser Aplicação
Browser
Web Server
SOAP Aplicação
WebSOAP
SOAP Server SOAP

HTTP HTTPSOAP
RPC
HTTPSMTP
HTTP HTTP
HTTPRPCSMTP
HTTP
SOAP HTTP

TCP TCPTCP UDP


TCPTCP TCP
TCPTCP UDP
TCP TCP
IP IP IP
IP IP
IP IP IP

Aplicação web clássica


Aplicação Aplicação
utilizando web clássica
SOAP
Aplicação sobre
RPC HTTP
SOAP
direto ou
sobre
sobre SMTP
HTTP
TCP/IP

18
Partes integrantes de uma mensagem SOAP

Envelope Unidade de comunicação

Header OPCIONAL
Block Atributos e detalhes
Block da comunicação

Body Block Mensagem propriamente dita:


Block Parâmetros de chamada a um
… método ou documento

19
Anatomia de uma mensagem SOAP

POST /Accounts/Henrik HTTP/1.1 SOAP-HTTP Binding


Host: www.webservicebank.com HTTP Request
Content-Length: nnnn
Content-Type: text/xml; charset="utf-8"
SOAP Body
SOAPAction: “www.xmlbus.com/Bank" SOAP Header
SOAP Envelope
<SOAP:Envelope xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/"
SOAP:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP:Header>
<s:security xmlns:s=“secure-URI" SOAP:mustUnderstand="1">
Signature
</s:security>
</SOAP:Header>
<SOAP:Body>
<m:Deposit xmlns:m=“www.xmlbus.com/bankingService">
<m:amount>200</m:amount>
</m:Deposit>
</SOAP:Body>
20 </SOAP:Envelope>
Ciclo de vida de uma chamada a um web service

SOAP
Fase 1 Request Fase 2
Serializa Desserializa
XML

SOAP
Message

Internet
Aplicação SOAP
cliente Response Aplicação
servidor
XML

Fase 4 SOAP Fase 3


Desserializa Message
Serializa

21
Padrões Relacionados aos Web Services

Process Description
(e.g., XLANG, WSFL)

Descrição
Diretório
de Serviços
UDDI
WSDL

Descrição de
Inspeção
SOAP Documentos
XML Schema DISCO

Protocol Description Discovery


22
Web Service na Prática

Find a Service
http://www.uddi.org
Link to DISCO or WSDL document UDDI
Discovery
http://yourservice.com
Web HTML or XML with link to WSDL
Service
How do we talk? (WSDL)
Consumer http://yourservice.com/?WSDL
Web
XML with service descriptions
Service
Let me talk to you (SOAP)
http://yourservice.com/svc1
XML/SOAP BODY
23
Design--Time or Dynamic
Design Runtime
Juntando as peças
Ainda em fase de desenvolvimento, procura-se
2 por determinado serviço em um nó UDDI.
1 Serviço é criado e publicado em um nó UDDI.

UDDI responde com uma lista de serviços


3
disponíveis. Esta lista fornece link para os
UDDI 5 Servidor retorna documento WSDL.

documentos WSDL e/ou DISCO. node


No exemplo, utilizou-se o documento WSDL
7 Servidor retorna mensagem SOAP
4 2 após processamento da chamada.
para desenvolver uma classe proxy que será
utilizada pela aplicação cliente para chamar
o web service.

6 Aplicação cliente faz 1


chamada ao web service via
mensagem SOAP montada
pelo objeto proxy. 3

Internet
4

5 WSDL
SOAP 6

7 SOAP

24
Aplicação Aplicação
Design-time Runtime
Cliente Servidor
Um web service simples

DEMO

25