Escolar Documentos
Profissional Documentos
Cultura Documentos
Juiz de Fora, MG
Julho de 2009
Arquitetura REST
_______________________________________________________
_______________________________________________________
_______________________________________________________
Juiz de Fora, MG
Julho de 2009
Agradecimentos
Agradeo a Deus, por me dar foras para seguir adiante.
Agradeo a meus familiares, em especial minha me, pelo incentivo e apoio incondicionais
em todos os momentos.
Aos amigos e colegas de sala por compartilhar comigo bons momentos e ajudar a superar os
momentos difceis.
Ao meu namorado Adriano por se fazer sempre presente, pelo carinho, pacincia e dedicao.
E a todos que de alguma forma contriburam no somente para o desenvolvimento deste
trabalho, mas tambm para a concluso do curso.
ii
Sumrio
Lista de Redues ................................................................................................................... vi
Lista de Figuras ..................................................................................................................... vii
Resumo .................................................................................................................................... ix
Abstract .................................................................................................................................... x
Introduo........................................................................................................................... 1
1.1
Motivao ...................................................................................................................... 1
1.2
Objetivos........................................................................................................................ 2
1.3
Arquitetura de Software..................................................................................................... 3
2.1
Histrico ........................................................................................................................ 3
2.2
2.4
2.5
Documentao de Arquiteturas..................................................................................... 11
2.5.2
2.5.3
Introduo .................................................................................................................... 15
3.2
Arquitetura ................................................................................................................... 16
3.3
3.3.1
3.3.2
3.3.3
3.3.4
3.4
3.5
Concluso .......................................................................................................................... 62
Lista de Redues
XML
WSDL
SOAP
OASIS
HTTP
DSSA
ADL
SEI
UML
W3C
DCOM
CORBA
RMI
REST
WSA
WSD
UDDI
URI
vi
Lista de Figuras
Figura 2.1 Nveis de descrio de um sistema ............................................................................ 5
Figura 2.2 Principais linguagens de descrio arquitetural ......................................................... 7
Figura 2.3 Exemplo de descrio ACME.................................................................................... 8
Figura 2.4 Principais Estilos Arquiteturais ............................................................................... 10
Figura 2.5 reas de Interesse dos Estilos Arquiteturais ........................................................... 10
Figura 3.1 Processo Geral de um Servio Web ........................................................................ 16
Figura 3.2 Relacionamento entre um WSD e seus agentes ....................................................... 18
Figura 3.3 Modelos da Arquitetura de Servios Web ............................................................... 19
Figura 3.4 Esquema Simplificado do Message Oriented Model ................................................ 20
Figura 3.5 Esquema simplificado do Service Oriented Model ................................................... 21
Figura 3.6 Esquema simplificado do Resource Oriented Model ................................................ 21
Figura 3.7 Esquema simplificado do Policy Model ................................................................... 22
Figura 3.8 Tecnologias Relacionadas aos Servios Web .......................................................... 23
Figura 3.9 Estrutura da mensagem SOAP ................................................................................. 24
Figura 3.10 Exemplo de mensagem SOAP .............................................................................. 25
Figura 3.11 Estrutura de um documento WSDL ...................................................................... 25
Figura 3.12 Exemplo de um documento WSDL ...................................................................... 26
Figura 3.13 Interao entre as tecnologias Web Services ......................................................... 27
Figura 3.14 Operaes entre as entidades relacionadas ............................................................ 28
Figura 4.1 Null Style ................................................................................................................ 31
Figura 4.2 Estilo Arquitetural Cliente-Servidor ....................................................................... 31
Figura 4.3 Estilo Arquitetural Cliente-servidor Sem Estado ...................................................... 32
Figura 4.4 Elementos de Dados REST ..................................................................................... 35
Figura 4.5 Conectores REST .................................................................................................... 37
Figura 4.6 Componentes REST ................................................................................................ 38
Figura 4.7 Mtodos do protocolo HTTP utilizados pela Arquitetura Orientada a Recursos ...... 45
Figura 4.8 Invocao e resposta de um mtodo pela viso tradicional de Servios Web ........... 46
Figura 4.9 Invocao e resposta de um mtodo pela viso REST de Servios Web .................. 47
vii
viii
Resumo
A Arquitetura de Servios Web surgiu para permitir a interoperabilidade entre aplicaes
rodando em diferentes plataformas. Ela foi especificada com base em um protocolo que
encapsula as mensagens SOAP (Simple Object Access Protocol) e em uma linguagem que
descreve as interfaces dos servios, conhecida como WSDL (Web Services Description
Language). A forma tradicional pela qual os servios web so implementados hoje em dia, que
segue aos padres citados, gera uma camada de abstrao que envolve o protocolo HTTP.
Este trabalho tem por finalidade apresentar os conceitos e tecnologias que envolvem uma
nova abordagem no contexto de implementao de servios o paradigma REST. Criado a
partir da tese de doutorado de Roy Fielding e baseado em outros estilos arquiteturais, tem como
principal meta a simplicidade e o desempenho das aplicaes. Alm disso, este trabalho aborda
uma aplicao prtica dos conceitos arquiteturais de REST a Arquitetura Orientada a
Recursos que permite transformar um problema em uma aplicao REST atravs do emprego
de URIs, HTTP e XML.
ix
Abstract
The architecture of Web services has emerged to allow interoperability between
applications running on different platforms. It was specified based on a protocol that
encapsulates messages - SOAP (Simple Object Access Protocol) and in a language that
describes the interfaces of services, WSDL (Web Services Description Language). The
traditional way in which web services are implemented today is a layer of abstraction that
includes the HTTP protocol.
This paper aims to present the concepts and technologies that involve a new approach for
implementation of services - the REST paradigm. Created by Roy Fielding in his thesis, it uses
some architectural styles in order to get applications simplicity and better performance.
Moreover, this paper addresses a practical application of REST architectural concepts - the
Resource Oriented Architecture - which allows transforming a problem in an REST application
through the use of URI, HTTP and XML.
1 Introduo
A complexidade dos softwares vem aumentando muito rapidamente de forma que as tcnicas
para lidar com os problemas existentes - conhecidas como tcnicas de abstrao - j se tornaram
insuficientes para lidar com os desafios da nova gerao de sistemas. Uma destas tcnicas de
abstrao a modularizao de um sistema. Dessa forma, todo sistema de software de alto
nvel de abstrao pode ser descrito por meio de subsistemas ou mdulos inter-relacionados. O
papel de analisar as propriedades de cada subsistema ou mdulo atribudo arquitetura de
software.
Com o surgimento de vrias arquiteturas de software, fez-se necessria a categorizao
das mesmas de acordo com suas caractersticas, componentes e propriedades peculiares. Dessa
forma, as classes de arquiteturas foram sendo classificadas em seus respectivos estilos
arquiteturais. Concomitante ao surgimento dos estilos arquiteturais surgiu uma arquitetura com
o objetivo de permitir a interoperabilidade entre aplicaes e sistemas de plataformas,
ambientes e arquiteturas diferentes a Arquitetura de Servios Web.
A abordagem tradicional do uso de Servios Web utiliza uma interface descrita em um
formato especfico - WSDL (Web Services Description Language). Essa interface permite que
sistemas interajam com um servio Web atravs de mensagens em um formato especfico,
conhecido como SOAP (Simple Object Access Protocol), normalmente enviadas utilizando
HTTP. Dessa forma, os servios esto escondidos por trs dos mtodos que podem ser
invocados remotamente.
1.1 Motivao
O surgimento da Arquitetura de Servios Web tornou possvel a interoperabilidade entre
aplicaes heterogneas. Porm, muitas vezes o desempenho do sistema comprometido,
devido ao tamanho das mensagens envelopadas no protocolo SOAP.
No entanto, surgiram algumas alternativas que podem melhorar o desempenho das
1
aplicaes com servios Web. Uma destas alternativas e a que tem sido mais focada atualmente
a arquitetura orientada a recursos, baseada no paradigma REST Representational State
Transfer.
1.2 Objetivos
O objetivo deste trabalho estudar os conceitos relacionados ao estilo REST e a
Arquitetura Orientada a Recursos, suas vantagens, desvantagens e, sobretudo suas diferenas
em relao abordagem tradicional de manipulao de Servios Web.
2 Arquitetura de Software
2.1 Histrico
Atualmente, cada vez mais o computador vem representando para as pessoas e instituies uma
ferramenta essencial e imprescindvel para a realizao de suas atividades, desde as mais bsicas
at as complexas. Concomitante a essa crescente dependncia dos sistemas computacionais, a
complexidade dos softwares vem aumentando to rapidamente que as tcnicas para lidar com a
complexidade de problemas existentes - conhecidas como tcnicas de abstrao - j se tornaram
insuficientes para lidar com os desafios da nova gerao de sistemas.
O crescimento contnuo do tamanho e da complexidade dos sistemas requer cada vez mais
atributos tais como confiabilidade, desempenho e manutenibilidade. A confiabilidade
fundamental para garantir que o sistema realizar as tarefas conforme o esperado e pode ser
medida de forma estatstica atravs da anlise do comportamento do sistema durante um
determinado perodo de tempo [MENDES, 2003]. O desempenho tambm tem se tornado um
fator crtico, devido principalmente s novas necessidades dos sistemas. J a manutenibilidade se
desmembra em dois aspectos distintos: reparo em funcionalidades (correo de erros) e evoluo
do sistema (insero de novos requisitos). Dessa forma, com o passar do tempo, todo e qualquer
sistema precisar de manuteno.
A Engenharia de Software surgiu com o propsito de lidar com esses problemas. Porm,
eles vo alm do mbito das estruturas de dados e dos algoritmos utilizados nos sistemas. Tornase ento imprescindvel, principalmente em sistemas de grande porte, projetar a estrutura global
do sistema antes de inici-lo, ou seja, desenvolver o software orientado a uma arquitetura. Foi
ento a partir da necessidade de um projeto arquitetural para os sistemas que surgiu o interesse
em Arquitetura de Software.
Linguagens de Descrio Arquiteturais e/ou Estilos Arquiteturais. Sero detalhadas a seguir estas
duas abordagens.
Acme
Acme uma linguagem simples e genrica para a descrio de arquiteturas que pode ser
usada como ferramenta para converter formatos de design e/ou como base para desenvolver
novas arquiteturas e ferramentas de anlise.
A linguagem Acme surgiu em 1995 a partir de contribuies e feedbacks de alguns
membros da comunidade de projeto de arquiteturas. Os princpios da linguagem e os trabalhos
para desenvolvimento de ferramentas foram financiados por um grupo da Carnegie Mellon
University aliado a outros colaboradores. Surgiu com o objetivo de fornecer uma linguagem que
pudesse ser utilizada como suporte para troca de arquiteturas entre diferentes ferramentas de
design de arquiteturas [ACME, 2009].
A linguagem possui trs caractersticas principais:
sistema).
Alm disso, as representaes de ADLs usadas hoje em dia no so suportadas por
ferramentas comerciais e a maioria delas muito focada em um determinado tipo de anlise.
Cada um desses estilos arquiteturais pode ser classificado de acordo com as reas
especficas de interesse de cada um. A figura 2.5 agrupa os estilos em reas de interesse:
Figura 2.5 reas de Interesse dos Estilos Arquiteturais [MICROSOFT, adaptado, 2008]
10
Module Views
seja, representam a planta (blue prints) para a construo do software. A notao mais utilizada
para representar as module views so os diagramas UML mais especificamente os diagramas de
classes. Atravs deles, o sistema decomposto em mdulos e as dependncias e hierarquias entre
eles so representadas nos diagramas.
Runtime Views
Implementation Views
Deployment Views
Data Model
Os Data Models normalmente so usados para representar bases de dados cuja estrutura
12
precisa ser modelada. O data model inicia como um modelo conceitual/lgico que vai sendo
refinado at conter todas as informaes necessrias para a criao da base de dados fsica.
A notao mais utilizada para esse tipo de view a de diagramas UML de entidaderelacionamento, nos quais as classes contenham apenas atributos e nenhum mtodo.
Guia de Variabilidade
13
Atributos de Qualidade
Decises de Projeto
Exemplos de uso
14
3.1 Introduo
De acordo com a definio do World Wide Web Consortium (W3C) [W3C, 2009], um servio
Web "um sistema de software responsvel por proporcionar a interao entre duas mquinas
diferentes atravs de uma rede. Para possibilitar essa interao, utiliza uma interface descrita em
um formato especfico - WSDL (Web Services Description Language). Essa interface permite
que sistemas interajam com um servio Web atravs de mensagens SOAP (Simple Object Access
Protocol) ou de outros protocolos, normalmente enviadas utilizando HTTP com uma serializao
em XML em conjunto com outros padres utilizados na Web" [W3C, 2009]. Esses padres sero
detalhados mais adiante.
O W3C um consrcio de empresas de tecnologia que cria padres comuns para o
contedo da Web e apoiado por grandes empresas como Microsoft, IBM, HP, entre outras. No
final do ano 2000 foi criado um grupo no W3C com propsito de desenvolver uma arquitetura
que permitisse a interoperabilidade entre aplicaes e sistemas de plataformas, ambientes e
arquiteturas diferentes. Alguns padres foram propostos, como o DCOM (Distributed Component
Object Model) [DCOM, 2009], CORBA (Common Object Request Broker Architecture)
[CORBA, 2009], e RMI (Remote Method Invocation) [RMI, 2009]. Porm as abordagens j
existentes foram bem sucedidas somente na integrao de redes locais e tiveram muitas
limitaes quando foram transpostas para sistemas de grande porte rodando sobre a Web,
principalmente devido independncia de plataforma que deixou a desejar.
Visando atender a essas necessidades, foi proposta uma arquitetura computacional voltada
para servios Web, que tornou possvel a interao entre diferentes tipos de aplicaes mesmo
rodando em plataformas e sistemas operacionais diferentes.
O objetivo deste trabalho apresentar, de forma comparativa, um novo estilo de
15
3.2 Arquitetura
A arquitetura de Servios Web descrita neste trabalho tomou como base a referncia
arquitetural do W3C, o WSA (Web Service Architecture) [WSA, 2004] e ir fornecer uma
definio comum de servios Web, atravs de um modelo conceitual e um contexto no qual os
componentes da arquitetura sero inter-relacionados. importante ressaltar que este trabalho no
tem a inteno de mostrar como os servios Web devem ser implementados e sim de descrever as
caractersticas arquiteturais mnimas comuns a todos eles.
A figura 3.1 ilustra o processo geral de um Servio Web.
a) Agentes e Servios
Um servio Web uma noo abstrata que deve ser implementada por um agente
concreto. O agente um mdulo de software ou hardware responsvel por receber ou enviar
mensagens, enquanto o servio caracterizado pelo conjunto de funcionalidades que sero
fornecidas. A diferena entre um agente e um servio pode ser visualizada mais claramente se um
servio Web for implementado usando um agente com diferentes linguagens de programao,
porm com a mesma funcionalidade. Dessa forma, o Servio Web permaneceria o mesmo
[MEDYK, 2006].
Basicamente, um agente pode ser entendido como a concretizao da noo abstrata (que
nesse contexto representa um servio). Em termos de padres de projeto, um servio representa
uma interface a ser implementada por uma classe concreta, representada por um agente.
c) Descrio do Servio
18
servios. Este o contrato entre a entidade Requester e a entidade Provider a respeito da proposta
e conseqncias da interao.
Embora este contrato represente um acordo geral entre as duas entidades em como e
porqu seus respectivos agentes iro interagir, ele no necessariamente implementado ou
explicitamente negociado. Ele pode ser explcito ou implcito, oral ou escrito e atravs de um
acordo legal ou informal.
19
20
22
XML uma linguagem de marcao criada pelo W3C a partir do SGML (Standard
Generalized Markup Language). Por oferecer padronizao, flexibilidade e a possibilidade de
descrever classes com diversos tipos de dados, o uso de XML reduziu significativamente os
custos de desenvolvimento. Estas classes de dados so documentos XML. [XML, W3C]
O objetivo principal da linguagem facilitar o compartilhamento de informaes pela
Web, podendo ser usado tambm por servios Web.
24
25
O padro foi desenvolvido para ser acessado atravs de mensagens SOAP e fornecer
acesso aos documentos WSDL descrevendo os protocolos e os formatos das mensagens
necessrios para a interao com determinado servio listado no diretrio.
O UDDI pode ser visto como as pginas amarelas dos servios Web. De forma anloga
s pginas amarelas tradicionais, um UDDI Registry oferece informaes categorizadas sobre os
servios e as funcionalidades que eles oferecem.
27
Servios Web: Modelo Orientado a Mensagens, Modelo Orientado a Servio, Modelo Orientado
a Recursos e Modelo de Policiamento. Cada modelo foca em um aspecto da arquitetura e
gerado a partir de um ponto de vista diferente. Um desses pontos de vista o do Modelo
Orientado a Recursos provm de um conceito comum com o paradigma REST o recurso.
As tecnologias relacionadas aos servios web XML, SOAP, WSDL e UDDI descritas
representam a forma tradicional como so implementados os servios web e ser comparada
com o paradigma REST mais adiante.
29
4 Arquitetura REST
REST (Representation State Transfer) um estilo arquitetural hbrido para sistemas distribudos
derivado da combinao de alguns estilos arquiteturais (descritos abaixo) com algumas
caractersticas adicionais. Foi criado a partir de um captulo da tese de doutorado de Roy Fielding
no ano de 2000 [FIELDING, 2000].
30
4.1.2 Cliente-servidor
A primeira caracterstica adicionada ao Null Style deriva do estilo arquitetural clienteservidor (Figura 4.2).
O princpio por trs da arquitetura cliente-servidor o de separao de responsabilidades.
Ao separar as responsabilidades de interface das de armazenamento de dados, a utilizao da
arquitetura cliente-servidor permite que os componentes, o cliente e o servidor, se desenvolvam
de forma independente. A evoluo independente de cada parte torna a arquitetura apta a suportar
os requisitos de aplicao de mltiplos domnios organizacionais na escala da Internet.
31
4.1.4 Cache
Combinando-se os estilos Cliente-Servidor, Sem Estado e Cache chega-se ao Cliente com
Cache-Servidor Sem Estado.
A grande vantagem deste estilo sobre o anterior de poder, parcialmente ou at
totalmente, eliminar algumas interaes entre cliente e servidor, sobrecarregando menos o
servidor. Com o uso do cacheamento, melhora-se o desempenho geral do sistema, pois diminui o
tempo de resposta da aplicao [TOBALDINI, 2008].
Para melhorar a eficincia da comunicao entre o cliente e o servidor, adiciona-se a
REST a caracterstica de cache, o que torna necessria a marcao explcita de uma resposta no
mbito de esta ser ou no passvel de cache. Em caso afirmativo, o cliente tem o direito de reusar
esta resposta futuramente, podendo se aproveitar das vantagens oferecidas pelo cacheamento.
Para obter uma interface uniforme, vrias caractersticas arquiteturais so necessrias para
guiar o comportamento dos componentes.
REST definido atravs de quatro elementos de interface: Identificao de Recursos;
Manipulao de Recursos atravs de Representaes; Mensagens Auto-descritivas e Hipermdia
como Mquina de Estados da Aplicao. Estes elementos sero detalhados na seo 4.2.
Dessa forma, REST foi gerado a partir de um null style em composio com
caractersticas de outros estilos arquiteturais. Embora cada uma dessas caractersticas possa ser
considerada de forma isolada, descrev-las em termos de suas derivaes de estilos arquiteturais
torna mais fcil entender a razo por trs destas escolhas.
A figura 4.4 ilustra os elementos de dados do estilo REST e seus respectivos exemplos.
4.2.1.2 Representao
Componentes REST executam aes sob um recurso utilizando uma representao para
capturar o estado atual e o estado desejado de um recurso solicitado e transferir a representao
entre os componentes.
Uma representao, em REST, uma seqncia de bytes acrescida dos meta-dados dessa
representao que descrevem estes bytes. Uma representao pode ser, por exemplo, um
documento, um arquivo, uma mensagem HTTP, entre outros. Mais especificamente uma
35
4.2.2 Conectores
REST utiliza vrios tipos de conectores (resumidos na figura 4.5) para encapsular a
atividade de acesso a recursos e para transferir representaes dos mesmos. Os conectores
provm uma interface abstrata para a comunicao entre componentes, melhorando a
simplicidade do sistema atravs da separao das responsabilidades e ocultando a implementao
de recursos e mecanismos de comunicao [FIELDING, 2000].
36
Finalmente, a ltima pea dos conectores de REST o tnel. Sua funo de criar um
caminho virtual para o trfego de dados de forma a transpor limites, como um firewall ou um
roteador.
A nica razo para incluir o tnel como parte da arquitetura REST e no abstrair como
parte da infra-estrutura de rede que alguns componentes de REST podem trocar dinamicamente
de um comportamento ativo para um comportamento de tnel. O exemplo desse cenrio o
Proxy HTTP que, dependendo do tipo de requisio que ele intermedia, deixa suas funes de
proxy e passa a se comportar como um tnel para permitir a comunicao direta (sem passagem
pelo proxy). Os tneis so destrudos aps o trmino de uma comunicao entre componentes
[TOBALDINI, 2008].
4.2.3 Componentes
Os componentes REST so categorizados de acordo com o papel que eles exercem no
mbito geral de uma aplicao, de acordo com a figura 4.6.
38
hierarquia de recursos. Os detalhes de implementao destes recursos ficam escondidos por esta
interface [FIELDING, 2000].
Os outros dois componentes gateway e proxy atuam simultaneamente como cliente e
servidor para permitir o encaminhamento de requisies e respostas. O proxy um componente
intermedirio escolhido pelo cliente que torna possvel o encapsulamento de outros servios,
traduo de dados, melhoria de performance ou algum tipo de controle de acesso de segurana. J
o gateway funciona como um proxy reverso. Ele fornece os mesmos servios que um proxy,
porm o gateway transparente ao usurio e utilizado pelo servidor de origem, enquanto o proxy
utilizado explicitamente pelo usurio.
4.3.1 Recursos
Um recurso algo que possa ser armazenado em um computador e representado como
uma seqncia de bits, como por exemplo, um documento ou uma imagem. Um recurso pode ser
um objeto fsico, como por exemplo, uma ma, ou at mesmo um conceito abstrato, como
coragem.
So exemplos de recursos:
A ltima verso de uma distribuio de um software;
Um nmero primo qualquer;
Uma lista de bugs de um banco de dados;
A relao entre dois conhecidos, Alice e Bob.
Para ser acessado, o recurso deve ser associado a um nome e um lugar onde ele possa ser
encontrado. Para isto utilizado um identificador de recurso, dessa forma, um recurso precisa ter
ao menos um identificador para que se torne acessvel [TOBALDINI, 2008].
REST, enquanto um estilo arquitetural, utiliza um identificador de recurso. No caso da
arquitetura orientada a recursos, os identificadores de recurso utilizados so as URIs (Unified
Resource Identifier).
As URIs devem ser utilizadas de forma estruturada, intuitiva e uniforme
41
4.3.2 Endereamento
Uma aplicao enderevel se ela expe aspectos interessantes sobre seu conjunto de
dados como recursos. Como URIs so atribudas a recursos, uma aplicao enderevel
quando ela expe pelo menos um URI para cada informao que ela deseja servir
[RICHARDSON; RUBY, 2007].
Um exemplo que ilustra a propriedade de endereamento o protocolo HTTP. O stio
http://www.google.com.br pode ser tomado como exemplo de aplicao HTTP
enderevel. Quando a busca de uma expresso realizada, a mesma traduzida em um URI que
possui todas as informaes para que a mesma possa ser repetida e obter a mesma resposta em
outra ocasio. Alm disso, este URI poder ser repassado para outra pessoa que necessitar obter a
mesma pesquisa [TOBALDINI, 2008].
Se esta aplicao no fosse enderevel o recurso mencionado no seria possvel. Sempre
que uma pesquisa fosse necessria, seria preciso entrar no stio e preencher o campo de busca e
solicitar a pesquisa.
4.3.3 Sem-Estado
A ausncia de estados (statelessness) significa que cada requisio feita pelo cliente
ocorre de maneira isolada no servidor, isto significa que no h lembrana de estados entre uma
requisio e outra. Quando uma requisio feita, ela dever conter todas as informaes
necessrias para que seja completada pelo servidor, que nunca ir se utilizar de informaes de
requisies anteriores [RICHARDSON; RUBY, 2007].
42
4.3.4 Representaes
Uma aplicao composta por diversos recursos. Cada recurso criado deve transmitir
alguma idia ao usurio, como por exemplo, informaes sobre REST. Porm, um servidor
no pode enviar uma idia ao usurio, mas sim uma seqncia de bytes em um formato especfico
para que possa ter utilidade ao cliente. Isto uma representao de um recurso [RICHARDSON;
RUBY, 2007].
Um recurso a origem de uma representao e as representaes so basicamente alguns
dados relevantes sobre o estado atual de um recurso. Alguns recursos so, por natureza, dados.
Um exemplo desse tipo de recurso uma lista de bugs, que tem como representao seus prprios
dados os itens da lista. Esta lista pode ser representada por um documento XML, uma pgina
HTML ou at mesmo um documento de texto puro [RICHARDSON; RUBY, 2007].
Porm, alguns tipos de recursos representam objetos fsicos ou outro elemento que no
possa ser naturalmente representado atravs de dados, como por exemplo, uma geladeira.
Considerando o cenrio de uma geladeira, seria impossvel obter uma geladeira atravs do acesso
a este recurso. Porm, o objeto geladeira possui informaes teis a seu respeito seus
metadados como, por exemplo, sua temperatura interna, a posio do termostato que a regula,
entre outros.
Como j mencionado, um recurso pode ter mais de uma representao. Torna-se
necessrio ento escolher qual representao deve ser obtida. Este problema pode ser resolvido
43
de vrias maneiras dentro das restries impostas pela arquitetura REST. Porm, a Arquitetura
Orientada a Recursos recomenda apenas uma maneira de solucionar este problema: utilizando
URIs distintas para cada tipo de representao. Esta abordagem torna possvel que cada URI
possua todas as informaes acerca do recurso, incluindo o tipo de representao desejada. Por
outro lado, isto causa diluio de um mesmo recurso em vrias URIs [TOBALDINI, 2008].
44
Figura 4.7 Mtodos do protocolo HTTP utilizados pela Arquitetura Orientada a Recursos
[TOBALDINI, 2008].
45
Figura 4.8 Invocao e resposta de um mtodo pela viso tradicional de Servios Web
[NUNES; DAVID, 2009]
Segundo a abordagem convencional do desenvolvimento de Servios Web, os servios
esto escondidos por trs de mtodos que podem ser invocados.
A arquitetura orientada a recursos se tornou uma alternativa para a construo de Servios
Web tendo por base os pressupostos estabelecidos com o modelo REST. Em um Servio Web
compatvel com a arquitetura REST, os recursos devem ser expostos e ter uma identificao
global. Ainda no cenrio utilizado como exemplo, na viso REST, os recursos correspondem a
documentos XML com a informao sobre os alunos. Cada URI identifica de forma nica a
informao sobre um estudante.
Depois de expostos os recursos, a interao realizada utilizando as operaes genricas
do protocolo HTTP. Dessa forma, para obter a representao da informao relativa a um
estudante, utiliza-se o mtodo GET sobre o URI do recurso. A figura 4.9 ilustra o pedido e a
resposta de uma requisio baseada nos princpios REST [NUNES; DAVID, 2009].
46
Figura 4.9 Invocao e resposta de um mtodo pela viso REST de Servios Web [NUNES;
DAVID, 2009]
47
5 Exemplos de Aplicao
Para contextualizar a apresentao dos conceitos das duas abordagens de Servios Web
apresentadas nos captulos anteriores viso tradicional e viso REST, um exemplo de servio
em Java ser ilustrado por ambas as implementaes.
A
IDE
utilizada
nos
exemplos
foi
Eclipse
verso
Galileo
48
49
50
54
55
56
As requisies do tipo GET podem ainda ser feitas atravs de um browser, como ilustra a
figura
5.11.
Atravs
das
URIs
http://localhost:8080/REST/filme/1
57
requisies.
Porm, a API ainda apresenta algumas restries, como o nmero mximo de oito
resultados por requisio e a no-permisso para alterar a ordem dos resultados da pesquisa
[GOOGLE, 2009].
Twitter
O twitter representa um dos mais recentes e bem sucedidos exemplos de redes sociais da
Web. Oferece uma API para desenvolvedores web possibilitando que os usurios acessem de
forma simples as diversas funcionalidades que a ferramenta disponibiliza a Twitter REST API
(http://apiwiki.twitter.com/Twitter-API-Documentation).
A API permite automatizar todas as funcionalidades da ferramenta que so acessadas
manualmente. A mesma torna possvel, atravs de requisies HTTP, obter tweets mensagens
enviadas de um determinado usurio, responder um usurio ou at mesmo filtrar tweets com
base em critrios pr-definidos [IBM, 2009].
Para
ilustrar
este
cenrio,
pode-se
considerar
URI
http://twitter.com/statuses/user_timeline.atom?id=liviaruback. A
mesma retorna o timeline ltima mensagem enviada em formato XML, do usurio
liviaruback.
Assim como A API REST do Google, a Twitter REST API ainda tem algumas limitaes
como o nmero mximo de 100 requisies por hora. Porm, Caso sejam necessrias mais de
100 requisies, pode-se requisitar ao twitter pertencer uma lista branca que permite aos
seus usurios mais de 100 acessos por hora [IBM, 2009].
5.4 Consideraes
Como demonstrado nas sees anteriores, a implementao de Servios Web pode ser
feita de duas maneiras: 1) da forma como a Arquitetura de Servios Web foi especificada (seo
4.5.1) ou 2) atravs de princpios da Arquitetura Orientada a Recursos (seo 4.5.2).
A Arquitetura de Servios Web baseada na viso tradicional de Servios Web (utilizando
59
SOAP, WSDL e UDDI) muito bem definida; segue regras para a troca de dados, segurana,
entre outros. J a Arquitetura Orientada a Recursos, por ser uma aplicao prtica dos conceitos
REST definidos por Fielding, segue as caractersticas de vrios estilos arquiteturais.
A principal diferena entre as duas abordagens citadas terica e no tecnolgica: A
Arquitetura de Servios Web baseada em servios, enquanto na Arquitetura Orientada a
Recursos, os servios so encarados como recursos e so identificados por uma URI.
A viso tradicional para implementao de Servios Web baseada em trocas de
mensagens no formato do protocolo SOAP e que devem seguir um contrato WSDL. Nesse
contexto, o protocolo HTTP utilizado somente para transporte. Ambos os lados cliente e
servidor precisam conhecer e entender SOAP e WSDL para desempacotar e utilizar os dados.
Dessa forma, cria-se uma abstrao da comunicao onde ferramentas devem encapsular a
informao para que o seu receptor a entenda e a processe. Alm disso, as trocas de mensagens
precisam ser envelopadas dentro de um pacote SOAP, e o que realmente utilizado uma parte
muito pequena do contedo contido no mesmo. Estas informaes desnecessrias podem
comprometer o desempenho de um sistema.
O fato que, para se construir um Servio Web necessrio apenas: um cliente, um
servio, informao, um meio de encapsular esta informao geralmente XML e de um meio
para acessar esta informao o protocolo HTTP.
De acordo com a viso arquitetural de REST, o protocolo HTTP j rico o suficiente para
que seja criada uma abstrao para a construo de servios.
A Arquitetura Orientada a Recursos faz uso unicamente do protocolo HTTP para a
comunicao, atravs do acesso direto aos mtodos nativos GET, POST, PUT, DELETE,
HEAD e OPTIONS. Como a Web baseada em HTTP, em alguns casos a utilizao de REST
mais adequada, pois aumenta a velocidade de comunicao entre os servios e conseqentemente
o desempenho geral da aplicao.
importante destacar que o paradigma REST no surgiu para substituir a viso j
existente e sim pra complementar a mesma. Quando realmente existe a necessidade de serem
manipulados vrios formatos - em vez de s XML ou quando for uma interao do tipo
aplicao-aplicao no faz sentido usar REST, mas sim a viso tradicional.
Porm, em determinadas aplicaes, REST claramente mais adequado do que a viso
tradicional, por exemplo, quando se pode ter uma interao usurio-aplicao. Um exemplo que
60
ilustra este cenrio um servio que poderia ser acessado via Ajax atravs de um browser
diretamente por um usurio.
Em casos como esse, a utilizao de REST muito mais simples. Basta ter um
conhecimento sobre o protocolo HTTP e seus mtodos invocando-os a partir de mtodos nativos
do protocolo. No exemplo descrito nas sesses anteriores, por exemplo, para se buscar
informaes sobre um determinado filme, a abordagem REST visivelmente a mais simples,
visto que a solicitao GET pode ser realizada at mesmo atravs de um browser.
Porm, para integraes em aplicaes corporativas, nas quais os servios oferecidos
devem possuir um contrato formal, serem desacoplados e reutilizveis, o paradigma REST no
a melhor opo, pois no possui um padro oficial para a descrio dos seus servios.
J no caso de servios para celulares, PDAs e outros dispositivos mveis, onde cada
requisio tem um custo relativamente alto, utilizar servios REST sem dvida a melhor opo,
devido, sobretudo simplicidade e ao desempenho. A maior prova disso tem sido a utilizao em
larga escala do paradigma por organizaes descritas anteriormente, como o Google e Twitter.
61
6 Concluso
Nos ltimos tempos, o aumento da complexidade dos sistemas de software, aliado crescente
importncia de aplicaes distribudas eficientes acarretou mudanas nos projetos dos sistemas.
Fez-se necessrio, ento, o surgimento de modelos em diferentes nveis de abstrao para a
soluo de problemas relacionados ao projeto de sistemas. A Arquitetura de Software surgiu
como o objetivo de identificar propriedades e relacionamentos relevantes em um projeto de um
sistema.
Para que o conhecimento de projeto de software fosse catalogado de maneira organizada e
til para uma futura reutilizao, surgiram os estilos arquiteturais. Os estilos arquiteturais
surgiram com a finalidade de classificar as classes de arquiteturas de software de acordo com
suas caractersticas peculiares.
Paralelo ao surgimento dos estilos arquiteturais e visando atender necessidades de
interao entre diferentes tipos de aplicaes mesmo rodando em plataformas e sistemas
operacionais diferentes, a Arquitetura de Servios Web surgiu como uma arquitetura
computacional voltada para servios Web - componentes que permitem s aplicaes enviar e
receber dados em formato XML.
A Arquitetura de Servios Web foi especificada de acordo com o protocolo SOAP
responsvel por empacotar as mensagens de requisio e resposta e com base em uma
linguagem de descrio responsvel por expor as interfaces dos Servios Web WSDL.
Atualmente, a maioria dos servios web faz uso dos padres definidos na especificao, ou seja,
as mensagens so trocadas encapsuladas pelo protocolo SOAP e seguem um contrato WSDL.
Esta maneira de manipular servios muitas vezes pode comprometer o desempenho do
sistema, visto que se gera uma camada de abstrao acima do protocolo HTTP. Alm disso, o que
realmente utilizado uma parte muito pequena do contedo contido nas mensagens.
Este trabalho apresentou um estilo arquitetural para lidar com servios web o paradigma
REST. O mesmo surgiu a partir de uma tese de doutorado de Roy Fielding em 2000 e tem
emergido como uma alternativa capaz de melhorar o desempenho das aplicaes com servios
62
Web. A aplicao prtica dos conceitos definidos por Fielding conhecida como Arquitetura
Orientada a Recursos.
A partir de um mesmo cenrio de consultas a um acervo de filmes foram ilustradas,
alm das caractersticas de ambas as abordagens, suas principais diferenas.
Embora as ferramentas e IDEs para a manipulao de servios Web ainda sejam recentes,
REST tem ganhado cada dia mais credibilidade, devido sua simplicidade e melhoria de
desempenho dos sistemas que o utilizam.
63
Referncias Bibliogrficas
[ACME. The Acme Project. 2009. Disponvel em: http://www.cs.cmu.edu/~acme/index.html.
Acesso em maio de 2009]
[AMORIM, S. S. A Tecnologia Web Services e sua Aplicao num Sistema de Gerncia de
Telecomunicaes. Dissertao (Mestrado Profissional de Engenharia de Computao) Universidade Estadual de Campinas, Instituto de Computao, Maro 2004. Disponvel em:
http://libdigi.unicamp.br/document/?code=vtls000332721. Acesso em maio de 2009]
[BELLWOOD, T. UDDI Version 2.04 API Specification. [S.l.], 2002. Disponvel em:
http://www.uddi.org/pubs/ProgrammersAPI-V2.04-Published-20020719.htm. Acesso em maio
de 2009]
[BUSCHMANN, F., MEUNIER, R., ROHNERT, H., SOMMERLAD, P. e STAL, M. Pattern
Oriented Software Architecture: A System Of Patterns, John Wiley e Sons, 1996]
[CLEMENTS, P., et al. Documenting Software Architectures: Views and Beyond. 2 Edio.
Addison Wesley, 2001]
[CHAVEZ, CHRISTINA VON FLACH G. Linguagens de Descrio Arquitetural, Disponvel
em
https://disciplinas.dcc.ufba.br/pastas/MAT161/2006.2%20(antes%20do%20CurriculoNovo)/Proj
eto/apss2-6.ModelagemSA-ADL.ppt Acesso em junho de 2009]
[CORBA. The official CORBA standard from the OMG group. 2009. Disponvel em
http://www.omg.org/docs/formal/04-03-12.pdf. Acesso em junho de 2009]
[DCOM. [MS-DCOM]: Distributed Component Object Model (DCOM) Remote Protocol
Specification. 2009. Disponvel em http://msdn.microsoft.com/pt-br/library/cc201989(enus).aspx. Acesso em junho de 2009]
[FIELDING, Roy Thomas. Architectural Styles and the Design of Network-based Software
Architectures. Dissertao de Doutorado - University of California, Irvine, 2000. Disponvel em
http://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm. Acesso em junho de
2009]
[GARLAN, David; SHAW, Mary. An Introduction to Software Architecture. Carnegie Mellon
University, 1994. Disponvel em
http://www.cs.cmu.edu/afs/cs/project/able/ftp/intro_softarch/intro_softarch.pdf. Acesso em maio
de 2009]
[GOOGLE, SEARCH API REST. Disponvel em
64
em
[ROSSINI, Srgio. Servios Web Semnticos. Juiz de Fora: 2008. 80p. Monografia em Cincia
da Computao - UFJF]
[SOFTWARE
ENGINEERING
INSTITUTE,
http://www.sei.cmu.edu/architecture/index.html. Acesso em maio de 2009]
65
CarnegieMellon.
66