Académique Documents
Professionnel Documents
Culture Documents
So Paulo
2013
So Paulo
2013
80 p.
RESUMO
ABSTRACT
Several platforms provide Rest API Webservices to extend its functionality and allow
greater interaction with external products. For consuming Rest Webservice in
Android operating system is necessary to use native libraries to make HTTP
requests, an approach that needs development code that does not belong to the
business. This paper aims to develop a framework for consuming Webservie REST
that wraps generic functions to be reused in the development of Android applications,
seeking to answer the question: How to reduce the need for code not inherent in the
business in the development of an application that need to consume REST
webservice? The hypothesis to remedy this issue is to use a framework that
encapsulate common functions in the development of an Android application
regarding the consumption of REST webservice. To fulfill his work were made a
bibliographic research to give a theoretical validity about subjects addressed, was
also developed a framework to simplify the consumption of REST Webservices ,
encapsulating common functions and Offering an API for developer use in
developing applications for the Android OS and an application that uses the
framework demonstrating its functionality .
Keywords: System integration; Web Services; REST; Android; Framework.
Lista de Quadros
Lista de Figuras
Figura 1: Interseco de funes comuns entre sistemas distintos. ..................................... 17
Figura 2: Exposio de servios atravs de Webservices que encapsulam uma infraestrutura
interna. ................................................................................................................................ 18
Figura 3: Interoperabilidade intrnseca na comunicao entre Webservices ........................ 19
Figura 4: Webservices expe uma interface de acesso via web para servios locais .......... 20
Figura 5: Estrutura Pattern Service API ............................................................................... 30
Figura 6: Diagrama de caso de uso ..................................................................................... 34
Figura 7: Arquitetura do Framework..................................................................................... 35
Figura 8: Diagrama de classes ............................................................................................ 37
Figura 9: Classe Resource................................................................................................... 38
Figura 10: Exemplo de Utilizao da Classe Resource ........................................................ 38
Figura 11: Classe RestExecutor .......................................................................................... 39
Figura 12: Exemplo de Utilizao da Classe RestExecutor .................................................. 39
Figura 13: Classe HttpHeader .............................................................................................. 40
Figura 14: Exemplo de Utilizao da Classe HttpHeader ..................................................... 40
Figura 15: Interface CallBack ............................................................................................... 41
Figura 16: Exemplo de Utilizao da interface CallBack ...................................................... 41
Figura 17: Interface PostCallback ........................................................................................ 41
Figura 18: Classe Response ................................................................................................ 42
Figura 19: Entidade Resource da base de dados ................................................................ 43
Figura 20: Exemplo de vinculao de objeto a um objeto Resource .................................... 44
Figura 21: Exemplo de requisio GET................................................................................ 44
Figura 22: Diagrama de sequncia GET .............................................................................. 45
Figura 23: Fragmento 1 do diagrama de sequncia do fluxo da operao GET ................... 47
Figura 24: Fragmento 2 do diagrama de sequncia do fluxo da operao GET ................... 48
Figura 25: Fragmento 3 do diagrama de sequncia do fluxo da operao GET ................... 49
Figura 26: Fragmento 4 do diagrama de sequncia do fluxo da operao GET ................... 50
Figura 27: Exemplo de uma requisio DELETE ................................................................. 51
Figura 28: Diagrama de sequncia DELETE ....................................................................... 52
Figura 29: Fragmento 1 do diagrama de sequncia do fluxo da operao DELETE ............ 54
Figura 30: Fragmento 2 do diagrama de sequncia do fluxo da operao DELETE ............ 55
Figura 31: Fragmento 3 do diagrama de sequncia do fluxo da operao DELETE ............ 56
Figura 32: Fragmento 4 do diagrama de sequncia do fluxo da operao DELETE ............ 57
Figura 33: Exemplo de uma requisio PUT ........................................................................ 58
Figura 34: Diagrama de sequncia PUT .............................................................................. 59
Figura 35: Fragmento 1 do diagrama de sequncia do fluxo da operao PUT ................... 61
Figura 36: Fragmento 2 do diagrama de sequncia do fluxo da operao PUT ................... 62
Figura 37: Fragmento 3 do diagrama de sequncia do fluxo da operao PUT ................... 63
Figura 38: Fragmento 4 do diagrama de sequncia do fluxo da operao PUT ................... 64
Figura 39: Exemplo de uma requisio POST ..................................................................... 65
Figura 40: Diagrama de sequncia POST............................................................................ 66
Figura 41: Fragmento 1 do diagrama de sequncia do fluxo da operao POST ................ 68
Figura 42: Fragmento 2 do diagrama de sequncia do fluxo da operao POST ................ 69
Figura 43: Fragmento 3 do diagrama de sequncia do fluxo da operao POST ................ 70
Figura 44: Fragmento 4 do diagrama de sequncia do fluxo da operao POST ................ 71
Figura 45: Interface grfica da aplicao com lista de cursos existentes no Coursera ......... 73
Figura 46: Interface grfica da aplicao com detalhes de um curso no Coursera ............... 74
Figura 47: Uso do framework na aplicao do Coursera ...................................................... 75
Lista de Siglas
SUMRIO
1
INTRODUO.............................................................................................................. 11
2.1
WEBSERVICE....................................................................................................... 17
2.2
2.3
2.4
2.5
2.6
Stateless................................................................................................................ 25
2.7
3.2
3.3
3.4
3.5
3.6
3.7
3.7.1
3.8
3.8.1
GET: ............................................................................................................... 44
3.8.2
DELETE: ........................................................................................................ 51
3.8.3
PUT: ............................................................................................................... 58
3.8.4
POST:............................................................................................................. 65
Pr-requisitos ........................................................................................................ 72
4.2
Funes................................................................................................................. 73
GLOSSRIO ................................................................................................................ 77
REFERNCIAS ............................................................................................................ 79
1 INTRODUO
Novas tecnologias surgem para suprir essas novas necessidades. Uma dessas
tecnologias Webservice REST (REpresentation State Transfer), um meio de obter
interoperabilidade entre diferentes sistemas atravs da exposio de recursos na
Web de maneira genrica de forma que no importa quem o fornecedor ou o
consumidor, eles podero se comunicar.
12
relevante tambm indicar que o sistema operacional Android responde por 53% do
mercado dos Estados Unidos de smartphones e, de acordo com o Google, cerca de
500.000 dispositivos Android so ativados por dia (FIAWOO, SOWAH, 2013).
13
O quarto captulo mostra uma aplicao para o sistema operacional Android com a
finalidade de testar o framework desenvolvido, utilizando um Webservice externo e
demonstrando suas funcionalidades.
14
2 FUNDAMENTAO TERICA
Benefcio
Explicao
Software reutilizado, que j tenha sido
testado e utilizado em ambiente de
Aumento de confiabilidade
embora
os
custos
de
tais
subsistemas
so
reutilizados
Continua
15
Continuao
Em vez fazendo o mesmo trabalho mais
Uso efetivo de especialistas
de
usurio,
implementadas
como
podem
um
ser
conjunto
aplicaes
iro
apresentar
os
desenvolvimento.
Reutilizar
software
funes
at
aplicaes
inteiras),
duas
dessas
tcnicas
so:
16
De uma maneira mais especfica, um framework pode ser definido como uma
arquitetura desenvolvida com o objetivo de atingir a mxima reutilizao,
representada como um conjunto de classes abstratas e concretas, com grande
potencial de especializao (MATTSSON, 1996, p. 52).
17
2.1
WEBSERVICE
Integrao entre sistemas tem se tornado uma atividade crtica para que as
empresas mantenham a competitividade em todos os setores. A cooperao de
diferentes reas e at diferentes organizaes para a criao de produtos
complexos que atendam as necessidades tornou-se o ponto chave para a vantagem
competitiva em diferentes reas (HOBDAY, PRENCIPE, DAVIES, 2003).
18
Webservice uma aplicao acessvel por outra aplicao atravs da Web, a qual
promove interoperabilidade entre linguagens por meio de uma linguagem
intermediria que tanto consumidor quanto fornecedor do servio conhecem
(ALONSO, et al., 2004).
19
20
Figura 4: Webservices expe uma interface de acesso via web para servios locais
2.2
O termo REST foi criado por Roy Fielding em sua dissertao de Ph.D., que pelo
prprio autor definido como estilo arquitetural para sistemas de hipermdia
distribudos (FIELDING, 2000, p. 76), isso significa que um estilo de arquitetura de
software; uma maneira de desenho da soluo para que hipermdias (udio, vdeo,
imagem, texto) sejam armazenadas e interconectadas pela rede atravs de
hyperlinks, um exemplo deste modelo maior rede hipermdia do mundo, a World
Wide Web (KALIM, 2009).
Um recurso qualquer coisa que seja importante o suficiente para que seja criado
um hyperlink para referenci-lo, qualquer pedao de informao a qual tenha um
hyperlink
um
recurso,
essa
propriedade
chamada
de
adressability
21
Uma URI deve ser descritiva, deve identificar o recurso de maneira intuitiva, por
exemplo, em uma aplicao de uma loja, para um recurso chamado produto, sua
URI deve identificar este produto (RICHARDSON, RUBY, 2009).
URIs devem ter uma estrutura, devem identificar nomes para que o recurso possa
ser interpretado. A sintaxe da URI deve ser utilizada como a navegao em um
sistemas de arquivos hierrquico. Esta restrio no descrita e no uma regra
absoluta no modelo REST, mas orientado fortemente que as URIs sejam
construdas desta maneira (RICHARDSON, RUBY, 2009).
22
2.3
<order id="111">
<customer>http://customers.myintranet.com/customer/32133</customer>
<order-entries>
<order-entry>
<quantity>5</quantity>
<product>http://products.myintranet.com/product/111</product>
Fonte: (BURKE, 2010. p. 11, adaptado)
23
2.4
Uniform Interface
Uma vez que um recurso tenha sido identificado, o conjunto de operaes que
podem ser aplicadas a ele fixo, atravs dos quatro mtodos (ou verbos): PUT,
GET, POST e DELETE do protocolo HTTP. Estas operaes semelhantes ao CRUD
(Create, Retrieve, Update e Delete (do ingls, criar, ler, atualizar e apagar)) se
aplicam a todos os recursos com semntica semelhantes. Cada um destes mtodos
invocado sobre um recurso usando uma requisio HTTP (PAUTASSO, 2009).
O quadro 5 mostra que utilizando os verbos HTTP e uma URI possvel criar
diversas interaes entre o cliente e o servidor:
24
Verbo HTTP
URI
Significado
empregados
de
acordo
com
as
informaes passadas
GET
empregados
GET
empregados?id=27
L o empregado com id
27
Empregados
empregados de
com
as
acordo
informaes
passadas
DELETE
Empregados
DELETE
empregados?id=27
Deleta
lista
de
empregados
2.5
POST x PUT
POST e PUT contm diferenas sutis, um cliente utiliza PUT quando ele ir decidir
qual URI o novo recurso ter, mas o cliente ir utilizar POST quando o servidor ir
decidir qual ser a URI do novo recurso (RICHARDSON, RUBY, 2009).
25
2.6
Stateless
A caracterstica Stateless (sem estado) indica que cada interao entre cliente e o
servidor deve conter toda a informao necessria para processar a requisio, ou
seja, no deve depender de nenhuma outra informao salva no servidor em alguma
outra operao. Essa propriedade melhora na visibilidade, pois o sistema de controle
no precisa ter a viso alm da prpria requisio. Tambm melhora confiabilidade
(pois mais fcil de recuperar uma falha parcial, que ocorreu apenas em uma
requisio) e em escalabilidade, pois simplifica a aplicao tendo em vista que o
servidor no precisa armazenar estados e gerenciar recursos entre as requisies
(FIELDING, 2000).
2.7
SOAP x REST
26
Critrio
SOAP
REST
Cliente/Servidor
Alto acoplamento
Baixo acoplamento
endpoint
recurso
Qualquer
HTTP
URI
Camada de Transporte
(Protocolo)
Continua
27
Continuao
Cache
No suporta
No uniforme, descrita em
Interface
um documento (WSDL)
Suporta
Interface Uniforme
necessria converso em
anexo.
Informao da operao
(mtodo)
Passagem de informao
Documento descritor
No corpo da mensagem
Informaes passadas no
corpo da mensagem
um novos webservices
Padres especficos do
Padres utilizados
Segurana
Informaes passadas no
corpo da mensagem e na
URI
WSDL
Escalabilidade
Mtodo HTTP
Especificao WSSecurity
WADL
Segurana HTTP
28
3 DESENVOLVENDO O FRAMEWORK
3.1
29
3.2
30
O quadro 7 apresenta uma breve explanao sobre cada mdulo descrito no padro
Service API.
31
Mdulo
Explicao
Responsvel por preparar a requisio
HTTP, tanto a URI quanto o corpo da
Rest Method
mensagem,
alm
da
execuo
da
das
incluses
requisies
de
flags
efetuando
sobre
se
uma
requisio
correspondente
Method,
deve
ao
tambm
Rest
executar
pela
Activity,
deve
fazer
cria
Intent(utilizado
para
componente
invocar
adiciona
da
parmetros
requisio
(como
Continua
32
Continuao
A
Activity
componente
que
ContentProvider e CursosAdapter
dados.
3.3
33
3.4
Funcionalidades do Framework
O framework encapsula funes genricas e expe uma API para ser utilizada pela
aplicao, as funcionalidades encapsuladas so apresentadas no quadro 9 onde so
descritos os requisitos funcionais:
Quadro 9: Requisitos funcionais
Requisito
Descrio
O framework deve expor uma API para executar
Serializao de chamadas
assncronas
integridade
dos
dados
de
forma
que
O
Persistncia e recuperao de
dados offline
framework
deve
requisies para
persistir
dados
das
Continua
34
Continuao
O framework deve controlar a
execuo de mltiplas threads e
do componente Service (utilizado
para execues em segundo
plano de longa durao).
3.5
Arquitetura do projeto
35
Funo
Expe
RestExecutor
API assncrona
para
ser
iniciar
nova
thread
em
um
sistema
execues
operacional
de
longa
Android
durao
para
em
segundo plano).
Tambm tem a funo de persistir o
recurso incluindo uma flag indicando que
o objeto est sendo processado, alm de
informar o chamador que a operao foi
encaminhada.
Continua
36
Continuao
Junto com
ServiceHelper, orquestra a
requisio
com
chamada
ao
persiste
dados
com
HTTPExecutor
HTTPHelper
Parser
37
3.6
Classes Principais
38
39
40
A interface Callback utilizada para criar callbacks que sero invocados ao receber
a resposta do servidor sobre a requisio, criado na chamada do mtodo na API
assncrona pela aplicao, a figura 15 contm a definio da interface.
41
42
3.7
Banco de Dados
O framework deve persistir dados para acesso offline, para tal ele contm um banco
de dados genrico que armazena os recursos utilizados pela aplicao cliente.
43
44
3.8
Exemplos bsicos:
3.8.1 GET:
Fonte: Os autores
Figura 21: Exemplo de requisio GET
45
46
47
Figura 23: Fragmento 1 do diagrama de sequncia do fluxo da operao GET
Figura 15: Parte 1 do diagrama de sequncia do fluxo da operao GET
48
49
50
51
3.8.2 DELETE:
52
53
54
55
56
57
58
3.8.3 PUT:
do objeto
restExecutor:
59
60
61
62
63
64
65
3.8.4 POST:
A chamada ao POST um pouco diferente, tendo em vista que sua funo criar
um recurso vinculado a outro e que a definio da URI deve ser feita pelo servidor, o
POST executado sobre o "recurso pai" e repassado qual recurso deve ser
vinculado ele. A URI do novo recurso repassada no Callback.
66
67
68
69
70
71
72
4.1
Pr-requisitos
73
4.2
Funes
Figura 45: Interface grfica da aplicao com lista de cursos existentes no Coursera
74
https://www.coursera.org/maestro/api/topic/information?topic-id=algs4partI
Onde algs4partI o id que identifica o curso e deve ser passada como valor do
parmetro topic-id.
75
76
5 CONSIDERAES FINAIS
Utilizando somente a API oferecida pelo framework foi possvel consumir servios,
promovendo um grande reuso de cdigo e consequentemente, um menor esforo no
desenvolvimento.
77
6 GLOSSRIO
78
Gson - Biblioteca de cdigos em Java desenvolvida pela Google Inc. para converso
de objetos Java em represetaes JSON e vice-versa.
Implementao annima - Implementao (e instanciao de um objeto)de uma
classe que no contm nome e utilizada somente localmente.
Intent - Componente do sistema operacional Android que indica a solicitao de
execuo de alguma ao.
IntentService - Componente do sistema operacional Android que solicita a
execuo de uma ao assncrona (atravs de um Intent)
JSON - um formato leve para intercmbio de dados computacionais.
Service - Componente do sistema operacional Android utilizado para executar
operaes em segundo plano, geralmente vinculado a um processo que deve
executar por tempo indeterminado.
Singleton - Padro garante a existncia de apenas uma instncia de uma classe,
mantendo um ponto global de acesso ao seu objeto.
SQLite - Banco de dados nativo no sistema operacional Android
UDDI - Servio de diretrio onde possvel publicar e descobrir Webservices
WADL - Documento XML que descreve aplicaes Webservices baseadas na
arquitetura REST
WS-* - Conjunto de especificaes para Webservices
WS-Security - Especificao para diretrizes de segurana para Webservices
WSDL - Documento XML que descreve aplicaes Webservices baseadas em
SOAP
79
7 REFERNCIAS
us,
https://www.coursera.org/about,
acessado:
80
Ghana, 2013.
HOBDAY, Michael, PRENCIPE, Andrea; DAVIES, Andrew; The Business Of
Systems Integration. Oxford: Oxford University Press, 2003.
JOHNSON, Ralph E. Frameworks=(components+patterns). Communications of
the ACM, v. 40, n. 10, p. 39-42, Ralph.
KALIM, Martin. Java Web Services: Up and Running. Sebastopol: OReally, 2009.
MASINTER, Larry; BERNERS-LEE, Tim; FIELDING, Roy T. Uniform resource
identifier (URI): Generic syntax. 2005. http://tools.ietf.org/html/rfc3986
MATTSSON, Michael. Object-oriented frameworks. Ronneby: University College of
Karlskrona/Ronneby, Licentiate thesis, 1996.
OLIVEIRA, Ricardo R. Avaliao de manutenibilidade entre as abordagens de
web services RESTful e SOAP-WSDL. Mestre em cincias da computao, USP
So Carlos, 2012.
PAUTASSO, Cesare. RESTful Web service composition with BPEL for REST,
Lugano: Elsevier, 2009
PRESSMAN, Roger S. Engenharia de software, Uma Abordagem Profissional
Stima Edo. So Paulo: McGraw HillHigher Education, 2011.
RICHARDSON, Leonard; RUBY, Sam. Restful Web Services. Sebastopol: OReally,
2009.
SAMETINGER, Johannes. Software engineering with reusable components. Linz:
Springer, 1997.
SAUV Jaques, P. Frameworks O que um Framework?, 2011. Universidade
de
Campina
Grande.
Disponvel
em:
http://www.dsc.ufcg.edu.br/~jacques/cursos/map/html/frame/oque.htmacessado:25/0
9/2013 s 23:45
SOMMERVILLE, Ian. Software Engineering Eighth Edition. USA, Pearson
Education Limited, 2007.