Escolar Documentos
Profissional Documentos
Cultura Documentos
Soap WS - WS RES TFULL PDF
Soap WS - WS RES TFULL PDF
{68973,dorneles,rebonatto}@upf.br
Abstract. This paper presents a study about Web services using the WS-*
architecture and the ROA architecture (RESTful), as well as a detail of the
main technologies involved. This paper also presents a case study developed
on Java platform for the purpose of demonstrate the functionality and main
differences in working with Web services using the two methodologies
mentioned.
Resumo. Este artigo apresenta um estudo sobre Web services utilizando a
arquitetura WS-* e a arquitetura ROA (RESTful), bem como um detalhamento
das principais tecnologias envolvidas. Este artigo tambm apresenta um
estudo de caso desenvolvido na plataforma Java a fim de demonstrar o
funcionamento e principais diferenas em se trabalhar com Web services que
utilizam das duas metodologias citadas.
1. Introduo
Com o passar do tempo, o mundo da tecnologia sofre grandes mudanas. Junto a essas
mudanas, surgem tambm novas necessidades. A necessidade da integrao entre
aplicaes, a utilizao unificada de processos encontrados em diferentes sistemas e
escritos em diferentes linguagens so alguns exemplos. A fim de sanar estas questes, a
tecnologia dos Web services foi criada. Permitindo assim, disponibilizar formas de
integrar sistemas distintos, modularizar servios e capacitar a integrao e consumo de
informaes [Menndez 2002].
Este artigo apresenta um estudo sobre Web services utilizando a arquitetura
WS-* e Web services que seguem o estilo de arquitetura REST (ROA), bem como um
estudo de caso para demonstrar as duas abordagens e servir de instrumento no processo
de comparao entre ambas. A principal contribuio do estudo realizado
proporcionar um embasamento macro da tecnologia e destacar as principais
caractersticas das arquiteturas em questo.
O artigo est dividido como segue. Seo 2 apresenta alguns trabalhos
relacionados a este artigo. Seo 3 dispe de uma explanao sobre o conjunto de
padres contidos na WWW, bem como um enfoque no protocolo de transporte HTTP o
qual amplamente utilizado junto aos servios. Seo 4 introduz a tecnologia de Web
Services para assim, detalhar nas Sees 5 e 6 os Web services WS-* e REST
respectivamente. Seo 7 apresenta um estudo de caso de servios utilizando a
plataforma Java, seguido de uma anlise comparativa na Seo 8 e das concluses na
Seo 9.
2. Trabalhos relacionados
Alguns artigos foram elaborados com a finalidade de demonstrar os principais aspectos
que constituem os Web services REST e WS-* de uma maneira isolada. Dentre eles
esto os trabalhos de [Tilkov 2007] no qual explanou os conceitos e princpios do estilo
de arquitetura REST; [Silva 2008b] explorou os Web services WS-* por meio de uma
abordagem prtica; e [Cunha 2002] o qual realizou estudos sobre aplicaes Web
utilizando SOAP. Outros realizaram trabalhos comparando caractersticas entre os Web
services REST e WS-* em diferentes reas; como os artigos de [Chinthaka 2007] que
focou na utilizao da WSDL 2.0 nas duas abordagens; [Newmarch 2004] enfatizou o
uso de ambas as abordagens na arquitetura UPnP, destacando vantagens e desvantagens;
e o artigo de [Shi 2006] sobre Web services Semnticos utilizando servios RESTful e
WS-*. Nenhum trabalho utilizando de um caso de uso para comparar caractersticas
entre Web services RESTful e WS-* foi encontrado na literatura pesquisada.
3. World-Wide Web
A World-Wide Web, conhecida tambm como WWW, ou simplesmente Web um
espao de informao em que os objetos de interesse, chamados de recursos, so
identificados por chaves globais chamadas de Uniform Resource Identifiers (URI)
[W3C 2004b]. A iniciativa que tornou possvel a Web ser o que hoje foi tomada por
Tim Berners-Lee em 1980 na Sua. Seu intento original era tornar mais fcil o
compartilhamento de documentos de pesquisas entre seus colegas. Ainda que diferente
da Web atual, o projeto continha algumas das mesmas idias primordiais. Utilizando
como base os padres URI, HTML e HTTP.
Segundo [Berners-Lee, 2005], o sistema de identificao URI disponibiliza uma
forma simples e extensvel de identificar recursos; como: pginas Web, imagens, vdeos
e servios. Existem diversos benefcios acarretados pelo Uniform Resource Identifiers,
incluindo a hiperligao (hiperlink), bookmarking, cache e indexao de motores de
busca como o Google.
O formato HTML foi o primeiro formato de dados usado na Web. Desde ento,
vrios formatos surgiram para a representao de recursos. Como a arquitetura WWW
no dita nenhuma restrio quanto ao formato a ser utilizado, XHTML, CSS, PNG,
XML dentre outros, ganharam espao. A maioria dos protocolos de recuperao e envio
de representaes faz uso de uma seqncia de uma ou mais mensagens, que juntas
contm os dados e metadados de uma representao a ser transferida entre agentes
(navegador/servidor).
O protocolo HTTP, por exemplo, limita os tipos de formatos das representaes
de dados e metadados que podem ser transmitidos. Para que seja transferida uma
representao no formato XHTML, o cabealho HTTP ter que ser configurado para tal
indicando que a representao pode ser processada de acordo com a especificao
XHTML.
Protocolo HTTP
Atualmente, O TCP/IP a base de todas as comunicaes na internet. Ele oferece
controle de roteamento de informaes em uma rede, e uma maneira dos computadores
se conectarem [Potss 2003]. Conforme o modelo OSI, ilustrado na Figura 1, o TCP e o
protocolo IP se localizam nas camadas de transporte e de rede respectivamente. Sendo
que o HTTP e os demais protocolos possveis de utilizao na comunicao de Web
services ficam na camada de aplicao.
4. Web Services
Um Web Service um sistema de software desenvolvido para suportar
interoperabilidade entre mquinas sobre uma rede, o qual pode apresentar uma interface
que o descreve (WSDL, WADL). Outros sistemas interagem com os Web services por
meio de mensagens SOAP, geralmente usando HTTP com serializao XML em
conjunto com outros padres relacionados a Web [W3C 2004a].
Com esta tecnologia, torna-se possvel que aplicaes diferentes interajam entre si e
sistemas desenvolvidos em plataformas diferentes se tornem compatveis. Os Web
services so componentes que permitem que aplicaes enviem e recebam dados em
formatos variados. Cada aplicao pode ter a sua prpria "linguagem", que traduzida
para uma linguagem universal, como o caso do formato XML.
Uma caracterstica fundamental dos Web services diz respeito a possibilidade de
utilizao de diferentes formas de transmisso de dados pela rede. Logo, a arquitetura
de Web services pode trabalhar com protocolos, tais como HTTP, SMTP, FTP,
RMI/IIOP ou protocolos de mensagem proprietrios [W3C 2004a].
Segundo [Potss 2003], as primeiras verses das especificaes de Web services
ofereciam apenas o HTTP como meio de transporte de dados (mensagens SOAP XML)
e comunicao entre clientes e servios, sendo ainda o mais utilizado atualmente.
Definio de REST
REST (Representational State Transfer) um termo que foi utilizado pela primeira vez
por Roy Fielding (um dos criadores do protocolo HTTP), em sua tese de doutorado
publicada no ano 2000. Este estilo de arquitetura de software para sistemas distribudos
(como a World Wide Web) no se torna aplicvel somente no desenvolvimento de Web
services.
O termo geralmente usado para descrever qualquer interface que transmita dados
de um domnio especfico sobre HTTP sem uma camada adicional de mensagem como
SOAP ou session tracking via cookies HTTP. Estes dois significados podem entrar tanto
em conflito como em sobreposio. possvel desenvolver um sistema de software de
acordo com as restries impostas pelo estilo arquitetural REST sem usar HTTP e sem
interagir com a Web. Tambm se torna possvel projetar interfaces HTTP + XML que
no condizem com os princpios REST de Fielding [Fielding 2000]. Sistemas que
seguem os princpios REST so referenciados tambm como RESTful.
Troca de Mensagens
Uma das idias centrais na troca de mensagens a utilizao de um URI de
identificao nica para cada recurso. Dependendo do mtodo utilizado para invoc-lo e
dos dados na requisio HTTP, este URI ter um funcionamento diferenciado. Para
melhor contextualizar pode-se tomar como exemplo um Web service de uma loja virtual
qualquer, onde existam servios para gerenciamento de produtos. Funes bsicas como
cadastro, alterao, deleo e listagem de produtos. Para invocar um destes servios
REST identificados por URIs, utiliza-se o formato genrico de mensagem HTTP. Caso
seja uma solicitao a um servio de deleo ou listagem de produto (DELETE, GET),
apenas a requisio para o identificador do servio necessrio, pois o mtodo HTTP j
indica qual a operao a ser realizada e o recurso solicitado. Caso seja uma requisio
de cadastro de produto ou de alterao do mesmo (POST, PUT), sero enviados no
corpo da requisio, os dados do produto, como: nome, descrio e marca.
Representaes
Quando uma aplicao dividida em recursos, conforme pregado pelo estilo REST, as
necessidades do usurio de um servio podem ser sanadas de uma forma mais dinmica.
O usurio pode construir uma URI apropriada e acess-la para que o servio desejado
seja alcanado. Trabalhando com a idia de recursos torna-se possvel oferecer
representaes em diferentes formatos e linguagens. Um usurio acessando um servio
da Itlia pode receber uma representao de um recurso em italiano, como um
americano acessando o mesmo servio dos EUA, pode ter como resultado a
representao na lngua inglesa.
Um recurso uma fonte de representaes, e uma representao so apenas dados
sobre o estado do recurso corrente. A maioria dos recursos na Web so itens de dados
prprios, como uma lista de produtos, logo uma representao bvia de um recurso so
seus dados em si. O servidor pode ento oferecer uma lista de produtos como um
documento XML, uma pgina Web ou em formato texto separado por vrgula. Alguns
recursos representam objetos fsicos, ou coisas que no podem ser reduzidas a
informao. Uma mquina de refrigerante ligada a um Web service pode disponibilizar
aos usurios da mquina informaes teis, como se o refrigerante est gelado, se o
refrigerante no est em falta, ou seja, metadados sobre o objeto e no que latas de
refrigerante estejam fisicamente disponveis por Web Service, pois objetos fsicos no
so dados [Richardson 2007].
Tipos de Representaes
Caso o servidor oferea mltiplas representaes de um recurso, o cliente do servio
deve decidir pela representao desejada. Existem diferentes maneiras RESTful de
passar essa informao ao servidor.
Uma das formas mais simples, prope a criao de URIs distintas para cada
representao de um recurso. Na analogia de um Web service que lista produtos de uma
loja, pode-se consumir o servio tendo como retorno uma representao em XML pela
URI http://www.loja.com.br/produtos/lista.xml e uma representao em formato
JSON pela URI http://www.loja.com.br/produtos/lista.json.
Uma segunda alternativa chamada de content negociation. Neste cenrio, existiria
somente uma URI para representar a lista de produtos,
http://www.loja.com.br/produtos/lista, no momento que um cliente fizesse uma
requisio ao servio, juntamente a requisio, seriam enviados dados no cabealho
HTTP, o qual sinalizaria o tipo de representao que o cliente espera receber. As
informaes no cabealho HTTP podem tanto originar do browser do cliente como
tambm serem setadas na criao do request, pelo cliente consumidor do servio. O
campo Accept-Language do cabealho HTTP pode ser usado pelo servidor para
identificar em que linguagem o cliente espera o retorno da requisio ou o campo
Content-Type para fins de identificao do formato solicitado.
WADL
O projeto WADL iniciou em 2006 e foi criado por Marc Hadley na Sun Microsystems.
Esta linguagem foi concebida para prover um formato descritivo para aplicaes Web,
especialmente as que utilizam XML. Em outras palavras, uma espcie de IDL
(Interface Definition Language) para aplicaes Web [Sun Microsystems 2006].
A Web Application Description Language (WADL) um vocabulrio XML que
expressa o funcionamento de recursos HTTP. Foi nomeada em analogia a conhecida
linguagem para descrio de Web services - WSDL, utilizada para descrever servios
baseados em SOAP e no estilo RPC. A WADL informa quais so os recursos
disponveis, os mtodos permitidos em cada um deles, e os parmetros de entrada e
sada dos servios. possvel disponibilizar um arquivo WADL que descreva todos os
recursos disponveis pelo servio criado, funcionando como um manual para o cliente
interessado na utilizao do mesmo.
7. Estudo de Caso
Nesta seo, apresentado um estudo de caso do desenvolvimento de servios de uma
loja virtual fictcia. A qual possui Web services para a manipulao de informaes
bsicas de uma loja, como: produtos, categorias e marcas. Estes Web services realizam
manipulaes de informaes como insero, edio, deleo e consulta. Sendo que, os
mesmos servios foram implementados em duas arquiteturas diferentes, uma utilizando
WS-* e outra no estilo REST (ROA).
Ambos os projetos foram desenvolvidos utilizando Java 6 na IDE Eclipse
Ganymede 3.4.1. Onde acessam uma base de dados em comum que utiliza como SGBD
a verso 5 do MySQL. A estrutura de dados da base utilizada apresentada na Figura 5.
A camada de persistncia dos Web services foi desenvolvida utilizando o framework
Hibernate verso 3, o qual possibilita o mapeamento das entidades da base de dados em
objetos Java. O servidor Web Java utilizado foi o Tomcat verso 6.
8. Anlise Comparativa
No processo de anlise, foi visto que algumas caractersticas esto presentes em ambas
as partes. Dentre elas est a possibilidade de uso de cache e a propriedade de dividir o
sistema em camadas, fortalecendo a reusabilidade de cdigo. A Tabela 1 apresenta itens
da comparao entre servios WS-* e servios RESTful.
Tabela 1. Anlise Comparativa entre Web Services WS-* e Web services REST
Fator de Comparao Web services WS-* Web services REST
9. Concluses
Este artigo apresentou uma anlise comparativa e conceitual entre Web services
RESTful e WS-*. Tambm apresentou um estudo de caso para demonstrar as duas
abordagens e servir de instrumento no processo de comparao. No decorrer dos
estudos, constatou-se que as duas abordagens tm suas vantagens e desvantagens,
demonstrando que cada uma tem sua rea de especialidade e, portanto, o dever de
coexistir.
Os servios WS-* tm a vantagem de ser bastante difundidos atualmente nas
empresas e organizaes de grande porte, ideais em circunstncias que envolvem
diferentes protocolos de comunicao; em ferramentas middleware utilizadas na
integrao de sistemas complexos e de diferentes arquiteturas (BPEL, ESB). Servios
RESTful, por outro lado, tm uma boa resposta em utilizaes que envolvam
manipulaes de dados onde resgatam as caractersticas da Web. Recomenda-se em
aplicaes mobile, onde o custo na troca de mensagens bastante elevado; em blogs e
sites de relacionamento, os quais so baseados em recursos e demandam de chamadas
RSS ou Atom; em servios de busca na internet, que trabalham com um alto trfego de
informaes.
Como trabalhos futuros tm-se em vista a avaliao de ferramentas para o
desenvolvimento de Web services que suportem ambos os tipos de servios, bem como
o detalhamento e aprofundamento de metodologias para implementar segurana em
servios de ambas as abordagens.
Referncias
BERNERS-LEE, Tim. Uniform Resource Identifier (URI): Generic Syntax, 2005.
Disponvel em: < http://labs.apache.org/webarch/uri/rfc/rfc3986.html>. Acesso em:
05 ago. 2009.
CHINTAKHA, Eran. Enable REST with Web services, Part 1: REST and Web services
in WSDL 2.0. Disponvel em: <https://www.ibm.com/developerworks/webservices/li
brary/ws-rest1/>. Acesso em: 08 nov. 2009.
CUNHA, Davi. Web Services, SOAP e Aplicaes Web. Disponvel em:
<http://www.devedge-temp.mozilla.org/viewsource/2002/soap-overview/index_pt_br
.html>. Acesso em: 08 nov. 2009.
DIAS, Ari Neto; MACHADO, Lucas Alves. REST com Struts 2. Java Magazine, So
Paulo, Edio 48, pg. 58 66, 2007.
FIELDING, Roy Thomas. Architectural Styles and the Design of Network-based
Software Architectures. 2000. Tese (Doutorado em Informao e Cincia da
Computao) Universidade da Califrnia, Califrnia, 2000.
FIELDING, Roy Thomas; BERNERS-LEE, Tim; W3C; UC Irvine; J. Gettys; Compaq;
H. Frystyk; J. Mogul; L. Masinter; Xerox; Microsoft; P. Leach. Hypertext Transfer
Protocol -- HTTP/1.1, 1999. Disponvel em: < ftp://ftp.isi.edu/in-notes/rfc2616.txt >.
Acesso em: 05 ago. 2009.
MENNDEZ, Andrs Igncio Martnez. Uma ferramenta de apoio ao desenvolvimento
de Web Services. Dissertao de Mestrado, Universidade Federal de Campina
Grande, curso de Ps-Graduao em Informtica, 2002.
NEWMARCH, Jan; A RESTful Approach: Clean UPnP without SOAP: Using Java in
Service-Oriented Architectures. 2004. School of Network Computing, Monash
University, 2004. Disponvel em: <http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?
arnumber=1405157>. Acesso em: 08 nov. 2009.
OASIS. UDDI Executive Overview: Enabling Service-Oriented Architecture, 2004.
Disponvel em: <http://uddi.xml.org/files/uddi-exec-wp.pdf>. Acesso em: 23 jun.
2009.
POTSS, Stephen. Aprenda Web Services em 24 Horas: Para quem no pode perder
tempo 24 lies de 1 hora. Editora Elsevier, 2003.
RICHARDSON, Leonard; RUBY, Sam. RESTful Web Services: Web Services for the
Real World. OReilly Media Inc, 2007.
SHI, Xuan; Sharing service semantics using SOAP-based and REST Web services.
School of Network Computing, West Virginia University, VA, 2006. Disponvel em:
< http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=1628908>. Acesso em: 08
nov. 2009.
SILVA, Pereira Bruno Luiz. REST vs WS-*: Uma Viso Pragmtica. Java Magazine,
So Paulo, Edio 54, pg. 38 47, 2008a.
SILVA, Pereira Bruno Luiz. Web services WS-*. Java Magazine, So Paulo, Edio 55,
pg. 24 31, 2008b.
SNELL, James. Resource-oriented vs. activity-oriented Web services. 2004. Disponvel
em: <http://www.ibm.com/developerworks/webservices/library/ws-restvsoap/>.
Acesso em: 15 set. 2009.
SUN MICROSYSTEMS. Web Application Description Language (WADL). Disponvel
em: <https://wadl.dev.java.net/wadl20090202.pdf>. Acesso em: 9 jun. 2009.
TILKOV, Stefan. A Brief Introduction to REST. Disponvel em:
<http://www.infoq.com/articles/rest-introduction/>. Acesso em: 08 nov. 2009.
WEERAWARANA, Sanjiva; CURBERA, Francisco; LEYMANN, Frank; STOREY,
Tony; FERGUSON, Donald F. Web Services Platform Architecture: SOAP, WSDL,
WS-Policy, WS-Adressing, WS-BPEL, WS-Reliable Messaging, and more. Prentice
Hall PTR, 2005.
W3C. Simple Object Access Protocol (SOAP) 1.1: W3C Note 08 May 2000. Disponvel
em: < http://www.w3.org/TR/2000/NOTE-SOAP-20000508/>. Acesso em: 14 jun.
2009.
W3C. Web Services Architecture: W3C Working Group 2004a. Disponvel em:
<http://www.w3.org/TR/ws-arch/ >. Acesso em: 13 maio 2009.
W3C. Architecture of the World Wide Web, Volume One 2004b. Disponvel em:
<http://norman.walsh.name/2004/12/15/examples/webarch.pdf>. Acesso em: 04 ago.
2009.