Faculdade de Engenharia da Universidade do Porto
Offline Web Applications
Enabling offline execution on the WOW! product
Jo˜
ao Gon¸
calves da Costa
Relat´orio de Projecto realizado no ˆAmbito do
Mestrado Integrado em Engenharia Inform´atica e Computa¸c˜ao
Orientador: Teresa Galv˜ao Dias (PhD.)
c
Offline Web Applications
Jo˜
ao Gon¸
calves da Costa
Relat´
orio de Projecto realizado no ˆ
Ambito do
Mestrado Integrado em Engenharia Inform´
atica e Computa¸c˜
ao
Aprovado em provas p´
ublicas pelo j´
uri:
Presidente: Pedro Ferreira do Souto (PhD)
Arguente: Artur Pereira (PhD) Vogal: Teresa Galv˜ao Dias (PhD)
Resumo
Este projecto teve como objectivo o estudo dasOffline Web Applications (OWAs)
e da sua implementa¸c˜ao em web applications j´a existentes. Neste ˆambito, foi feita uma avalia¸c˜ao da aplica¸c˜ao desta tecnologia no WOW!, uma plataforma integrada de gest˜ao de ordens de trabalho, desenvolvida pela Critical Software S.A. ao longo dos ´ultimos 6 anos, e implementada uma prova de conceito que permite a utiliza¸c˜ao de um conjunto de funcionalidades base desta web application, independentemente do estado da liga¸c˜ao `a Internet.
O conceito das OWAs enquadra-se numa tecnologia de Internet que permite o acesso a um website atrav´es do browser mesmo na ausˆencia de uma liga¸c˜ao `a rede global, e foi considerado pela revista Technology Review como uma das mais importantes tecnologias emergentes no final de 2007 [Nao08]. O estudo efectuado no
WOW!pretende ser um primeiro passo na compreens˜ao dos problemas associados `a sua implementa¸c˜ao e respectivas solu¸c˜oes e tamb´em da avalia¸c˜ao dos benef´ıcios da utiliza¸c˜ao desta tecnologia para os utilizadores finais.
A evolu¸c˜ao das tecnologias associadas `a Internet, a que se assiste continua-mente, impulsionou tamb´em evolu¸c˜ao da forma como a informa¸c˜ao ´e produzida, distribu´ıda e armazenada. Surgiram novas web applications oferecendo funcionali-dades de cria¸c˜ao e edi¸c˜ao de conte´udos, que trouxeram consigo a vantagem de tornar poss´ıvel o acesso `a informa¸c˜ao a partir de qualquer lugar, mas tamb´em a desvan-tagem de tornar a liga¸c˜ao `a Internet uma condi¸c˜ao necess´aria para que isto aconte¸ca. A prolifera¸c˜ao destas aplica¸c˜oes, a crescente utiliza¸c˜ao da Internet [Gro08] e a ades˜ao aos seus servi¸cos indiciam a existˆencia de uma dependˆencia cada vez maior de uma liga¸c˜ao, que nem sempre existe.
As OWAs vˆem assim colmatar esta falha, colocando no lado do cliente parte da informa¸c˜ao que at´e agora vinha a ser armazenada no servidor e tornando n˜ao s´o poss´ıvel a sua consulta offline, como tamb´em reduzindo a carga no servidor, uma vez que reduz as transferˆencias de informa¸c˜ao.
Pretende-se neste documento apresentar diferentes formas de como a utiliza¸c˜ao da tecnologia OWA pode beneficiar as web applications de hoje, melhorando o seu desempenho e dando-lhes novas possibilidades de execu¸c˜ao, aproximando-as do desk-top.
Abstract
The main purpose of this project was to study the Offline Web Applications (OWAs)and its implementation in existentweb applications. With this goal in mind, a study was conducted to use this technology inWOW!, an integrated platform for work orders and work flow management, developed by Critical Software over the last 6 years, and implemented a proof of concept, which enables the use of a base set of functionality for this application, regardless of the internet connection state.
The concept of OWAs is connected with internet technology, and allows access to a website using the browser, even if a connection to the internet is not available. This concept was considered by Technology Review as one of the most important emerging technologies in the last quarter of 2007 [Nao08]. This study, conducted over the WOW! platform, is intended to aid in the comprehension of the problems and solutions associated to the use and implementation of OWA, as well as the benefits that it brings to the end user.
The Internet and Internet technologies are changing the way in which informa-tion is produced, distributed and stored. New web applicationsappeared, with new content creation and edition functionalities, and with it, the advantage of infor-mation retrieval from any place and time became possible, but with the condition of Internet connection availability. With Internet use growing every year [Gro08], content creation is starting to move to this new platform. The adoption of web ap-plications for content creation and edition is becoming more popular, and it shows a dependency of a connection that is not always present.
The OWAs are a way to solve this problem, putting on the client side part of the information that was traditionally stored on the server, and allows it to be seen and manipulated, and helps reducing the server load.
This document intends to present different ways in which this technology can help web applications as we know them, improving the their overall performance and giving them the ability to run on a browser, regardless of the Internet connection availability
Agradecimentos
A realiza¸c˜ao e os objectivos alcan¸cados neste projecto n˜ao teriam sido poss´ıveis sem a colabora¸c˜ao de in´umeras pessoas. Agrade¸co profundamente a todos os que contribu´ıram directa ou indirectamente para o seu sucesso:
`
A minha orientadora, Professora Teresa Galv˜ao Dias, e ao Project Manager Engenheiro Marcus Neves, que me conduziram e acompanharam no desenvolvimento deste projecto,
A toda a equipa do WOW!, em especial o Pedro Maur´ıcio Costa e o F´abio Matos, que contribu´ıram para a minha a minha integra¸c˜ao na Critical Software e que sempre souberam responder a todas as minhas quest˜oes,
A todos os que constituem a CSW Porto, pelo fant´astico ambiente de amizade que me proporcionaram,
Aos colegas de curso e a todos os que me auxiliaram na revis˜ao deste documento,
Os meus sinceros agradecimentos! Jo˜ao Gon¸calves da Costa
Conte´
udo
1 Introdu¸c˜ao 1 1.1 Enquadramento . . . 1 1.2 Motiva¸c˜ao . . . 2 1.3 Ambito . . . .ˆ 3 1.4 Objectivos . . . 3 1.5 Estrutura do documento . . . 3 2 Enquadramento do Projecto 5 2.1 Evolu¸c˜ao das arquitecturas de software . . . 52.1.1 Thin-clients . . . 5
2.1.2 Fat-clients . . . 6
2.1.3 Arquitecturas cliente-servidor . . . 7
2.2 Evolu¸c˜ao na Internet . . . 8
2.2.1 P´aginas web est´aticas . . . 9
2.2.2 P´aginas web interactivas e p´aginas web dinˆamicas . . . 9
2.2.3 Web 2.0 e Ajax . . . 11
2.3 Offline Web Applications . . . 13
2.4 Compara¸c˜ao . . . 13
3 Estado da arte 17 3.1 Gears . . . 17
3.1.1 Arquitectura . . . 17
3.1.2 Goggle Gears em dispositivos m´oveis . . . 20
3.2 Adobe AIR . . . 20
3.2.1 Seguran¸ca . . . 22
3.2.2 Assinatura do c´odigo . . . 22
3.3 Mozilla Prism . . . 23
3.3.1 XML User Interface Language . . . 23
3.3.2 Prism . . . 25
3.4 HTML 5 . . . 25
3.5 Web applications que usam funcionalidades offline . . . 26
3.5.1 Google Reader e Google Docs . . . 26
3.5.2 Remember the Milk . . . 27
3.5.3 MySpace e WordPress.com . . . 27
CONTE ´UDO
4 Desenvolvimento 33
4.1 Como ficar offline . . . 33
4.1.1 Funcionalidades dispon´ıveis em modo offline . . . 34
4.2 Modos de execu¸c˜ao . . . 35
4.2.1 Modo “utilizador decide” . . . 36
4.2.2 Modo aplica¸c˜ao decide . . . 36
4.2.3 Modo “aplica¸c˜ao assume o estado offline” . . . 37
4.3 Sincroniza¸c˜ao de dados . . . 38
4.3.1 Quando sincronizar? . . . 39
4.4 WOW! . . . 40
4.5 Vis˜ao geral sobre a arquitectura do WOW! . . . 41
4.6 WOW! Offline . . . 42
4.6.1 Modo “aplica¸c˜ao decide” com detec¸c˜ao autom´atica da liga¸c˜ao 43 4.6.2 Implementa¸c˜ao do modo “utilizador decide” . . . 45
4.6.3 Especifica¸c˜ao do modo “aplica¸c˜ao assume o estado offline” . . 48
5 Resultados e Futuros Desenvolvimentos 51 5.1 Resultados Obtidos . . . 51 5.2 Trabalho Futuro . . . 52 6 Conclus˜oes 55 6.1 Conclus˜oes . . . 55 Referˆencias 59 A Screenshots 61
Lista de Figuras
2.1 Arquitectura de um sistema thin-client em duas camadas (`a esquerda) e em trˆes camadas (`a direita). Note-se a inclus˜ao do servidor (main-frame) na defini¸c˜ao das camadas desta arquitectura, devido `a forte dependˆencia cliente-servidor. . . 9
2.2 Arquitectura de um fat-client em duas camadas (`a esquerda) e em trˆes camadas (`a direita). . . 10
2.3 Compara¸c˜ao do modelo de web aplications s´ıncrono, p´aginas est´aticas e interactivas abordados nas sec¸c˜oes 2.2.1 e 2.2.2, com o modelo de web applications Ajax (ass´ıncrono) abordado na sec¸c˜ao2.2.3. Figura adaptada de http: // www. adaptivepath. com/ . . . 15
3.1 Esquema UML do processo efectuado pelos recursos do Gears do tipo ManagedResourceStore para a actualiza¸c˜ao dos conte´udos definidos no ficheiro manifesto. . . 29
4.1 Exemplo de uma arquitectura de uma web application sem uma ca-mada de abstrac¸c˜ao de dados. Figura adaptada de http: // gears. google. com/ . . . 33
4.2 Exemplo de uma arquitectura de uma web application com uma ca-mada de abstrac¸c˜ao de dados. Figura adaptada de http: // gears. google. com/ . . . 34
4.3 Exemplo de uma arquitectura de uma web application com uma ca-mada de abstrac¸c˜ao de dados e um data switch. Figura adaptada de
http: // gears. google. com/ . . . 35
4.4 Esquema gr´afico ilustrando uma OWA executando no browser uti-lizando um modo de execu¸c˜ao do tipo “aplica¸c˜ao decide”, com de-tec¸c˜ao autom´atica do estado da liga¸c˜ao via pedidos Ajax ass´ıncronos a cada cinco segundos. . . 37
4.5 Detalhe de um conjunto poss´ıvel de estados e respectivas transi¸c˜oes para uma dada ordem de trabalho no WOW!, desde a sua submiss˜ao no sistema at´e `a sua conclus˜ao em fecho ou cancelamento. Esta figura representa apenas um exemplo, j´a que o mapa de estados para uma ordem de trabalho ´e dinˆamico e pode ser alterado por um admin-istrador. Figura retirada de uma brochura promocional do WOW!, Critical Software S.A. . . 41
LISTA DE FIGURAS
4.6 A p´agina inicial do WOW apresenta um resumo das ´ultimas ordens de trabalho enviadas e recebidas. Na imagem pode-se observar a transi¸c˜ao do estado online para offline. . . 44
4.7 Ilustra¸c˜ao do funcionamento do Gears numa web application que uti-liza um motor Ajax. Os pedidos HTTP ou HTTPS podem ser inter-ceptados e tratados localmente ou podem ser feitos a uma m´aquina remota, consoante se verificarem ou n˜ao as condi¸c˜oes expressas no ponto 3.1.1. ´E representado um acesso a uma base de dados local (fornecida pelo Gears), mas a sua utiliza¸c˜ao ´e opcional. . . 45
4.8 Neste exemplo do modo “aplica¸c˜ao decide”, o teste da liga¸c˜ao ´e feito ´
e feito a cada cinco segundos. O resultado deste teste n˜ao reflecte sempre o estado real da aplica¸c˜ao, podendo levar a aplica¸c˜ao a ter comportamentos indesej´aveis. Na figura assinala-se um per´ıodo de tempo no qual a representa¸c˜ao interna do estado da liga¸c˜ao n˜ao cor-responde `a realidade. . . 46
4.9 P´agina de visualiza¸c˜ao do detalhe de uma ordem de trabalho. . . 47
4.10 Esquema UML que expressa os casos de uso do WOW! Offline no modo “utilizador decide”. . . 48
4.11 Esquema UML que expressa os casos de uso do WOW! Offline no modo “utilizador decide”. . . 49
4.12 Esquema UML que expressa o acto de recolha de dados em modo online e offline, recorrendo ao servidor (modo online) e ao sistema de armazenamento de dados local fornecido pelo Gears (modo offline). 50
A.1 Di´alogo apresentado ao utilizador na primeira activa¸c˜ao das funcional-idades offline no Google Docs & Spreadsheets. . . 61
A.2 Na activa¸c˜ao das funcionalidades offline ´e tamb´em oferecida a possi-bilidade da cria¸c˜ao de alguns atalhos, por exemplo, no ambiente de trabalho. . . 62
A.3 O Google Docs mant´em a todo o momento a possibilidade de altera¸c˜ao destas defini¸c˜oes, ou da anula¸c˜ao dos servi¸cos offline para um dado computador. . . 62
A.4 Ap´os a instala¸c˜ao do Gears qualquer visita ao Remember The Milk despoleta uma sincroniza¸c˜ao que ocorre automaticamente e sem ne-cessidade de interven¸c˜ao por parte do utilizador. . . 63
A.5 Ap´os completar a sincroniza¸c˜ao de dados, mesmo que a liga¸c˜ao `a Internet seja perdida o Remember the Milk continua dispon´ıvel no browser (com excep¸c˜ao das funcionalidades que pela sua natureza exigem uma liga¸c˜ao, como por exemplo: partilha de tarefas e envio de convites.) . . . 63
Lista de Tabelas
2.1 Compara¸c˜ao entre thin-clients e fat-clients . . . 7
3.1 Compara¸c˜ao das funcionalidades oferecidas pelo Adobe AIR para as plataformas web e desktop . . . 30
3.2 Resumo da utiliza¸c˜ao de tecnologias OWA em algumas web applica-tions consideradas na an´alise do estado da arte. . . 31
Gloss´
ario
fat-client Cliente que n˜ao depende totalmente de um servidor central para as suas actividades de processamento e possui frequentemente dispositivos de armazenamento de dados.
6–8
thin-client Cliente que depende de um servidor central para as suas actividades de processamento.
5–8
web application Sistema web (servidor, rede HTTP, browser ) onde ac¸c˜oes do utilizador (navega¸c˜ao e introdu¸c˜ao de informa¸c˜ao) afectam o estado l´ogico da aplica¸c˜ao.
i, iii, 1–3, 11–15, 17–19, 21–23, 27, 28, 33, 36–38, 42, 55, 56
API Application Programming Interface 10, 17,
18, 23,
26,28
ASP Linguagem interpretada pelo servidor que permite a cria¸c˜ao de p´aginas web dinˆamicas. Desenvolvida pela Microsoft.
11
BSD Berkeley Software Distribution 28
CSS Cascading Style Sheets 12, 20,
21, 23,
24,46
DHTML Dynamic HyperText Transfer Protocol 24
DOM Document Object Model 10, 12,
20, 23,
24
Gloss´ario
ECMAScript Padr˜ao de linguagem de programa¸c˜ao definido pela Ecma International que orig-inou o JavaScript e o JScript.
24
Flash Conte´udo interactivo de um ficheiro em formato SWF. ´E desenvolvido pela Adobe e visualizado atrav´es do Adobe Flash Player.
21
Flex Framework baseada em XML e Action-Script desenvolvida pela Adobe para a pro-grama¸c˜ao de Rich Internet Applications (RIA)
21
GPL GNU General Public License 23
HTML HyperText Markup Language 1, 10–
12, 21,
24–26,
49
HTTP HyperText Transfer Protocol 2, 26
JMS E uma API em Java que permite a troca de´ mensagens entre componentes de software.
42
JSON JavaScript Object Notation, permite a troca de dados, codificados num formato de texto de simples leitura
12, 18,
28, 34
LGPL GNU Lesser General Public License 23
Mozilla Prism Browser simplificado e “interpretador” de
eXtensible User Interface Language (XUL)
(tamb´em designado por XULRunner) que acolhe web applications sem a interface gr´afica habitual de um browser.
25
MPL Mozilla Public License 23
OCA Occasionally Connected Application 39
OWA Offline Web Application i, iii,
2–5, 15, 17, 25, 26, 28, 31, 33, 36, 51, 52, 55, 56
Gloss´ario
PHP Linguagem interpretada pelo servidor que permite a cria¸c˜ao de p´aginas web dinˆamicas, mas que pode tamb´em ser in-vocada a partir da linha de comandos.
11
p´agina web est´atica P´agina web que devolve sempre a mesma resposta a todos os pedidos, para todos os utilizadores e em qualquer contexto.
5, 9
RIA Rich Internet Applications web appli-cations que apresentam funcionalidades semelhantes ´as desktop applications, mas que mant´em a informa¸c˜ao no lado do servi-dor
5, 15,
20,28
RSS Really Simple Syndication 27
SLA Service Level Agreement 40
SQLite Segundo a defini¸c˜ao oficial: SQLite is a software library that implements a self-contained, serverless, zero-configuration, transactional SQL database engine..
17
SSB Site Specific Browser 25
SSL Secure Sockets Layer 22
SWF ShockWave Flash 21
URL Uniform Resource Locator 18
VPN Virtual Private Network 38
WOW! Work Orders Web. Plataforma de gest˜ao de ordens de trabalho e do seu fluxo, de-senvolvida pela Critical Software S.A.
i, iii, 28, 33, 40–43, 45, 51–53, 56
WWW World Wide Web 11, 12,
14
XBL eXtensible Binding Language 24
XHTML eXtensible HyperText Markup Language 12
XML eXtensible Markup Language 11, 12,
23, 24,
28
XSLT eXtensible Stylesheet Language Transfor-mation
12
XUL eXtensible User Interface Language xiv,
Cap´ıtulo 1
Introdu¸
c˜
ao
Neste cap´ıtulo enquadra-se o tema do projecto, introduzindo alguns dos conceitos nos quais se baseia. Apresentam-se as motiva¸c˜oes, ˆambito, objectivos e a estrutura deste documento.
1.1
Enquadramento
A Internet foi originalmente concebida para ser um espa¸co de partilha de in-forma¸c˜ao, onde pessoas (atrav´es de m´aquinas) pudessem comunicar. Na sua origem, as p´aginas eram est´aticas, constitu´ıdas por texto formatado emHyperText Markup Language (HTML)e ligadas entre si [BL96]. Hoje encontramos conte´udos cada vez mais complexos e dinˆamicos, incluindo som, v´ıdeo ou streams multim´edia [Loo06] e em 2005 foi introduzido por [O’R09] o termo Web 2.0.
De acordo com [Greon] um website pode pertencer a uma ou v´arias das seguintes categorias:
• Documento – um website essencialmente est´atico, onde altera¸c˜oes a uma parte do conte´udo n˜ao tem implica¸c˜oes no seu comportamento.
• Base de dados – um direct´orio de informa¸c˜ao organizada em categorias.
• Aplica¸c˜ao – um website dinˆamico, que utiliza uma linguagem executada ou interpretada do lado do servidor, e que processa as ac¸c˜oes ou informa¸c˜ao in-troduzida pelo utilizador para fornecer um servi¸co ou nova informa¸c˜ao.
A ´ultima destas categorias constitui aquilo que ´e normalmente designado por
web application. O conceito utilizado ao longo deste documento ´e o mesmo que o introduzido por Jim Coallen em [Con99], que define web application como um
Introdu¸c˜ao
sistema web (servidor, rede HyperText Transfer Protocol (HTTP), browser ) onde ac¸c˜oes do utilizador (navega¸c˜ao e introdu¸c˜ao de informa¸c˜ao) afectam o estado l´ogico da aplica¸c˜ao. A sua defini¸c˜ao tenta estabelecer que uma web application ´e um sistema de software com estado de neg´ocio1, e que a sua interface de interac¸c˜ao com o utilizador ´e distribu´ıdo atrav´es de um sistema web.
1.2
Motiva¸
c˜
ao
A quantidade de informa¸c˜ao que ´e produzida e armazenada com recurso a es-tas web applications dispon´ıveis online, tais como e-mail, blogues ou mesmo docu-menta¸c˜ao, tornam por vezes a disponibilidade de liga¸c˜ao uma condi¸c˜ao necess´aria `
a produtividade e, como consequˆencia desta barreira, muitos potenciais utilizadores op˜oem-se `a adop¸c˜ao de produtos web em detrimento das tradicionais desktop appli-cations.
Assegurar o acesso a uma liga¸c˜ao de Internet ´e hoje muito mais f´acil. A Internet m´ovel ´e j´a uma realidade e encontra-se amplamente divulgada, mas continuam a existir diversas situa¸c˜oes nas quais os utilizadores est˜ao privados de uma liga¸c˜ao `
a Internet, tais como uma viagem de metro ou de avi˜ao, ou quando se encontram deslocados do seu pa´ıs de origem e n˜ao possuem nenhum plano de subscri¸c˜ao.
Uma OWA consiste numa web application que para al´em de manter todas as caracter´ısticas anteriores, se mant´em dispon´ıvel mesmo na ausˆencia de uma liga¸c˜ao `
a Internet e surge como uma tentativa de estreitar as barreiras existentes entre a web e o desktop. Isto significa que dever´a existir um mecanismo capaz de assegurar a manuten¸c˜ao do estado l´ogico da aplica¸c˜ao quando a liga¸c˜ao com o servidor ´e quebrada, permitindo ao utilizador continuar a utilizar a aplica¸c˜ao, e que ser´a capaz de informar o servidor do estado em que a aplica¸c˜ao se encontra quando a liga¸c˜ao for reposta. A principal vantagem que adv´em desta possibilidade ´e evidente: eliminar a necessidade da existˆencia de uma liga¸c˜ao `a Internet para que a aplica¸c˜ao possa ser utilizada.
Por outro lado, a vontade de integra¸c˜ao de funcionalidades t´ıpicas das desktop applications nas web applications foi um dos principais factores que impulsionou o desenvolvimento deste conceito, uma vez que obrigou a uma reflex˜ao “para al´em do browser ” e a uma adapta¸c˜ao das arquitecturas existentes que permitisse ou o acesso a funcionalidades disponibilizadas pelo sistema operativo ou, pelo menos, a funcionalidades semelhantes. Pretende-se com esta aproxima¸c˜ao tornar poss´ıveis interac¸c˜oes entre o desktop e o browser, tais como arrastar um ficheiro para um formul´ario web de upload de conte´udos, melhor suporte para o hist´orico do clipboard ou ainda o acesso ao sistema de ficheiros local. Atingir estes objectivos reflecte-se
Introdu¸c˜ao
num novo paradigma, que re´une as vantagens das web applications, tais como os updates instantˆaneos ou o facto de n˜ao ser necess´aria nenhuma instala¸c˜ao, e das desktop applications, como por exemplo: persistˆencia no armazenamento de dados, acesso a funcionalidades do sistema operativo ou integra¸c˜ao e interac¸c˜ao com outras aplica¸c˜oes, sejam elas web applications ou desktop applications.
1.3
Ambito
ˆ
Este projecto foi realizado na Critical Software S.A. no ˆambito do Mestrado Integrado em Engenharia Inform´atica e Computa¸c˜ao (MIEIC) da Faculdade de En-genharia da Universidade do Porto (FEUP) entre os meses de Fevereiro e Julho de 2008.
1.4
Objectivos
S˜ao objectivos deste projecto:
1. Estudar e documentar o tema dasOWAsacompanhando os ´ultimos desenvolvi-mentos nesta mat´eria.
2. Analisar o estado da arte, fazendo uma an´alise cr´ıtica e objectiva sobre as diversas metodologias existentes.
3. Implementar uma prova de conceito, que permita a execu¸c˜ao offline de uma
web application, documentando todo o processo.
4. Estudar a possibilidade de permitir interac¸c˜ao com a aplica¸c˜ao (inser¸c˜oes e altera¸c˜oes aos dados) em modo offline.
Em resumo, o objectivo deste projecto foi estudar, documentar, e implementar uma prova de conceito relacionada com o tema Offline Web Applications (OWA). Este tema, embora n˜ao seja totalmente novo, ganhou destaque ao longo do ano de 2007 com o surgimento de diversas ferramentas que se destinam a aproximar web applications das desktop applications.
1.5
Estrutura do documento
Este documento est´a organizado em diferentes sec¸c˜oes, apresentando o projecto numa sequˆencia l´ogica organizada da seguinte forma:
No cap´ıtulo 1 faz-se uma breve apresenta¸c˜ao do conceitoOWAse do contexto em que surge. Apresenta-se tamb´em a estrutura do documento e definem-se os termos e acr´onimos utilizados.
Introdu¸c˜ao
No cap´ıtulo 2 faz-se uma descri¸c˜ao da evolu¸c˜ao das tecnologias que antecedem as
OWAs e das vantagens e desvantagens de cada uma, como forma de enquadra-mento.
No cap´ıtulo 3 analisa-se o estado da arte nesta mat´eria. Introduzem-se diversas tecnologias directamente relacionadas com o tema deste projecto, exemplos de aplica¸c˜oes que as usam e as raz˜oes que fundamentam as escolhas de tecnologias efectuadas.
O cap´ıtulo 4 contem o desenvolvimento do projecto. Analisa-se a plataforma WOW! de gest˜ao integrada de ordens de trabalho, a tecnologia escolhida e a forma como foi utilizada para implementar a capacidade de execu¸c˜ao offline. O cap´ıtulo 5 descreve os resultado obtidos, comparando-os com as expectativas iniciais do projecto e apresenta desenvolvimentos futuros e possibilidades de continua¸c˜ao/aplica¸c˜ao do conhecimento adquirido.
Cap´ıtulo 2
Enquadramento do Projecto
Neste cap´ıtulo apresenta-se um breve resumo da evolu¸c˜ao das arquitecturas de software cliente-servidor e a forma como estas se comparam `a evolu¸c˜ao da Inter-net, procurando estabelecer uma analogia entre o percurso de ambas as tecnolo-gias. Compara-se o comportamento e arquitectura dos thin-clients `as p´aginas web est´aticas, a evolu¸c˜ao dos fat-clients `as p´aginas interactivas, Web 2.0 e Ajax, e defende-se que as OWA constituem um pr´oximo passo l´ogico e evolutivo, aproxi-mando a web do desktop. Referem-se ainda os principais factores que justificam a importˆancia dasOWAse a estreita rela¸c˜ao que tˆem com asRich Internet Application (RIA)s.
2.1
Evolu¸
c˜
ao das arquitecturas de software
Os termos thin-client e fat-client s˜ao utilizados quer para descrever arquitecturas l´ogicas (de software), quer para descrever arquitecturas f´ısicas (de hardware). Neste cap´ıtulo, excepto quando seja dada indica¸c˜ao em contr´ario, estes termos referem-se sempre a uma arquitectura l´ogica.
Adicionalmente, quando se trata de arquitecturas cliente-servidor pode-se estu-dar a arquitectura desenvolvida do sistema como um todo, da arquitectura do servi-dor ou da arquitectura do cliente. Para evitar equ´ıvocos, em especial na sec¸c˜ao2.1.3, especifica-se em cada caso qual o sistema estudado.
2.1.1 Thin-clients
Um thin-client ´e um computador cliente ou software cliente, que no contexto de uma arquitectura cliente-servidor, depende de um servidor central para as suas
Enquadramento do Projecto
actividades de processamento e proporciona um canal de entrada e sa´ıda de in-forma¸c˜ao entre o utilizador e o servidor remoto. Este termo, quando aplicado a hardware, refere-se habitualmente a um computador que se destina a ser utilizado como cliente de rede, sem armazenamento local e com capacidade de processamento reduzida [Gro02b], mas o conceito que aqui se analisa refere-se a uma arquitectura de software que remonta ao in´ıcio das aplica¸c˜oes cliente-servidor.
No in´ıcio da hist´oria da computa¸c˜ao, terminais ligavam-se directamente a main-frames respons´aveis por todo o processamento. Nesta arquitectura, era necess´ario desenvolver duas aplica¸c˜oes distintas: uma aplica¸c˜ao central no servidor (main-frame), respons´avel pela gest˜ao de toda a informa¸c˜ao e por todas as opera¸c˜oes de comunica¸c˜ao, e uma aplica¸c˜ao de visualiza¸c˜ao, instalada no cliente (terminal). O papel destes terminais era apenas disponibilizar ao utilizador um meio de comu-nica¸c˜ao (entrada e sa´ıda) e apresenta¸c˜ao dos resultados do servidor. N˜ao tinham um papel activo no c´alculo nem na l´ogica de neg´ocio e frequentemente n˜ao tinham tamb´em nenhum mecanismo de armazenamento de dados.
Como vantagens, esta arquitectura apresenta uma reduzida necessidade de con-figura¸c˜ao e manuten¸c˜ao do lado do cliente. Uma vez que o centro do processamento e manipula¸c˜ao de dados ocorre no servidor, existe tamb´em uma centraliza¸c˜ao da informa¸c˜ao [NJN00] que introduz um ponto cr´ıtico de falha1. Actualiza¸c˜oes e novas funcionalidades s˜ao f´aceis de distribuir, uma vez que requerem apenas altera¸c˜oes no servidor [Gro02a].
2.1.2 Fat-clients
Contrastando com os thin-clients, nesta arquitectura os clientes implementam j´a uma parte da l´ogica de neg´ocio e s˜ao respons´aveis pelo processamento de dados. Estes fat-client s vieram responder `a necessidade crescente de aplica¸c˜oes com um n´ıvel de interactividade e capacidade de configura¸c˜ao maior que as oferecidas pela arquitectura thin-client, descrita na sec¸c˜ao 2.1.1. Apesar de manterem a sua de-pendˆencia do servidor, podem tamb´em ser executados sem uma conex˜ao activa uma vez que disp˜oe de armazenamento de dados local, o que lhes confere a capacidade de persistˆencia de dados e do estado de execu¸c˜ao entre cada sess˜ao.
Foi disponibilizando este controlo sobre o estado da aplica¸c˜ao, bem como acesso a recursos locais (por exemplo, sistema de ficheiros e perif´ericos) que surgiram as primeiras verdadeiras desktop applications. No entanto, cada cliente tinha que ser separadamente instalado no computador pessoal de cada utilizador que pretendesse utilizar ou interagir com a aplica¸c˜ao e uma actualiza¸c˜ao ao servidor implicava in-variavelmente uma actualiza¸c˜ao manual tamb´em no cliente. Uma vez que nem todos
Enquadramento do Projecto
Thin-clients Fat-clients
N˜ao toma parte no processamento de dados nem possui acesso ao sistema de ficheiros.
Participa activamente no processa-mento de dados, recorrendo ao sis-tema de armazenamento local para ar-mazenamento de dados.
N˜ao mant´em registo do estado l´ogico da aplica¸c˜ao entre duas sess˜oes de uti-liza¸c˜ao.
O acesso ao armazenamento local permite-lhe manter registo do estado l´ogico da aplica¸c˜ao entre duas sess˜oes. O thin-client n˜ao necessita de qualquer
instala¸c˜ao, estando “pronto a utilizar”. ´
E geralmente necess´ario instalar a aplica¸c˜ao para poder interagir com o servidor
Qualquer update no servidor reflecte-se imediatamente por todos os clientes.
Embora a aplica¸c˜ao cliente possa aler-tar para existˆencia de novas vers˜oes, as actualiza¸c˜oes tˆem que ser manualmente instalados pelo cliente.
O software do cliente destina-se apenas `
a apresenta¸c˜ao de dados e comunica¸c˜ao com o servidor, sendo portanto, de sim-ples implementa¸c˜ao.
Como o software do cliente toma parte activa no processamento de dados, a sua implementa¸c˜ao requer cuidados adicionais.
Grande mobilidade, uma vez que toda a informa¸c˜ao ´e mantida no servidor
Parte da informa¸c˜ao poder´a estar ape-nas do lado cliente, pelo que existem algumas restri¸c˜oes `a sua mobilidade. Tabela 2.1: Compara¸c˜ao entre thin-clients e fat-clients
os utilizadores actualizam regularmente as suas aplica¸c˜oes, o servidor tem que estar preparado para lidar com vers˜oes antigas2, ou descontinuar os seus servi¸cos a uma
parte da sua comunidade de utilizadores at´e que estes actualizem os seus sistemas. Como os utilizadores passam a utilizar os seus recursos locais para armazenamento de dados, as altera¸c˜oes que n˜ao sejam sincronizadas com o servidor est˜ao apenas dispon´ıveis nos seus computadores pessoais, o que introduz uma restri¸c˜ao `a mobili-dade.
Pode-se afirmar que as vantagens dos thin-clients s˜ao as desvantagens dos fat-clients, e que as vantagens dos fat-clients s˜ao as vantagens dos thin-clients, tal como se ilustra na Tabela 2.1.
2.1.3 Arquitecturas cliente-servidor
Introduzidos os termos thin-client e fat-client, interessa reafirmar que ambos podem ser vistos como arquitecturas cliente-servidor. Um cliente define-se como um solicitador de servi¸cos e um servidor como um prestador de servi¸cos, tal como definido por [Sch96] e [Sad97].
Enquadramento do Projecto
As arquitecturas cliente-servidor s˜ao categorizadas pela modulariza¸c˜ao com que s˜ao desenhadas, sendo consideradas as seguintes camadas:
1. Interface gr´afica (front-end ) atrav´es da qual os utilizadores interagem com a aplica¸c˜ao. Quando este m´odulo ´e implementado separadamente dos outros dois constitui uma aplica¸c˜ao thin-client por si s´o, uma vez que n˜ao implementa regras de neg´ocio (embora possa definir valida¸c˜oes de formul´arios de inser¸c˜ao de dados, por exemplo). A informa¸c˜ao introduzida pelo utilizador ´e enviada para o servidor, que processa o seu pedido e retorna uma resposta. Este processo repete-se at´e que o utilizador atinja o seu objectivo ou se desligue do sistema; 2. A l´ogica de neg´ocio, tamb´em designada por camada interm´edia, que imple-menta as regras de aceita¸c˜ao e valida¸c˜ao de todos os dados introduzidos pelo utilizador. ´E tamb´em a plataforma de comunica¸c˜ao que une a camada superior de visualiza¸c˜ao com a camada de acesso a dados;
3. A camada de dados inclui quer o sistema de persistˆencia de dados, onde s˜ao armazenados os dados relevantes, como tamb´em os mecanismos necess´arios para a sua pesquisa, selec¸c˜ao e altera¸c˜ao.
Osthin-client s, quando observados no seu conjunto de cliente e servidor, podem ser vistos quer como sistemas de duas camadas, quer como sistemas de trˆes camadas, dependendo apenas da forma como o servidor for implementado. No caso de, na implementa¸c˜ao do servidor n˜ao se distinguir a camada de acesso a dados da camada da l´ogica de neg´ocio, s˜ao designados por sistemas de duas camadas. Caso seja feita esta distin¸c˜ao, s˜ao designados por sistemas de trˆes camadas. Ambos os casos s˜ao ilustrados na Figura 2.1.
Historicamente, os fat-client s eram implementados numa arquitectura em duas camadas. Possu´ıam apenas um m´odulo de visualiza¸c˜ao de dados, designado por camada de interface, e um m´odulo que implementava toda a l´ogica de neg´ocio e regras de acesso `a base de dados. No entanto, com a introdu¸c˜ao de liga¸c˜oes mais r´apidas e de computadores pessoais com maior capacidade de processamento e so-bretudo devido `a complexidade crescente das aplica¸c˜oes, a l´ogica de neg´ocio e a camada de acesso a dados tornaram-se independentes. Este modelo ´e designado por arquitectura em trˆes camadas e ´e ilustrado na Figura2.2.
2.2
Evolu¸
c˜
ao na Internet
Ao analisar a evolu¸c˜ao das arquitecturas das aplica¸c˜oes desenvolvidas para a Internet, podemos encontrar um paralelismo com a hist´oria da arquitectura de soft-ware.
Enquadramento do Projecto
Figura 2.1: Arquitectura de um sistema thin-client em duas camadas (`a esquerda) e em trˆes camadas (`a direita). Note-se a inclus˜ao do servidor (mainframe) na defini¸c˜ao das camadas desta arquitectura, devido `a forte dependˆencia cliente-servidor.
2.2.1 P´aginas web est´aticas
Uma p´agina web est´atica devolve sempre a mesma resposta a todos os pedidos, para todos os utilizadores e em qualquer contexto, utilizando o hipertexto como forma de liga¸c˜ao entre diversas p´aginas est´aticas.
A informa¸c˜ao ´e armazenada num servidor, e o papel do cliente ´e apenas a apre-senta¸c˜ao da informa¸c˜ao. Esta forma de disponibiliza¸c˜ao de informa¸c˜ao pode assim ser comparada com os thin-clients descritos na sec¸c˜ao 2.1.1: o utilizador acede a um website est´atico para visualizar informa¸c˜ao sem que o cliente tome parte no processamento. A ´unica diferen¸ca ´e que no caso da web est´atica a informa¸c˜ao ap-resentada ´e sempre a mesma, enquanto que nos thin-clients era frequente existir a possibilidade de inser¸c˜ao de dados no cliente e ap´os o seu processamento servidor, nova informa¸c˜ao poderia ser apresentada. O hipertexto ´e utilizado para ligar as p´aginas entre si numa rede de conte´udos relacionados, e a navega¸c˜ao s´ıncrona era feita atrav´es de cliques do rato: a cada clique uma nova p´agina era apresentada. Este modelo s´ıncrono ´e ilustrado na Figura2.3.
2.2.2 P´aginas web interactivas e p´aginas web dinˆamicas
O JavaScript ´e uma linguagem interpretada de scripting que tem os browsers como principal ambiente de acolhimento. Os browsers utilizam uma Application
Enquadramento do Projecto
Figura 2.2: Arquitectura de um fat-client em duas camadas (`a esquerda) e em trˆes camadas (`a direita).
Programming Interface (API)p´ublica para criar “objectos” respons´aveis por reflectir e disponibilizar o Document Object Model (DOM) para o motor de JavaScript.
A utiliza¸c˜ao mais frequente desta linguagem ´e a escrita de fun¸c˜oes que s˜ao em-bebidas ou inclu´ıdas em p´aginas web e que interagem com o DOM. Uma vez que o JavaScript ´e executado localmente (na m´aquina do cliente e n˜ao no servidor) ´e capaz de responder rapidamente a ac¸c˜oes do utilizador, tornando a execu¸c˜ao de aplica¸c˜oes no browser mais flu´ıdas; o JavaScript pode tamb´em detectar ac¸c˜oes do utilizador que o HTMLn˜ao pode, tal como o pressionar de uma tecla.
Em Dezembro de 1995 a Netscape Communications adicionou suporte para o JavaScript no browser Netscape Navigator3, e em Agosto de 1996 o browser Internet
Explorer4 da Microsoft passou a tamb´em a suportar uma vers˜ao semelhante desta linguagem (hoje, todos os principais browsers suportam esta tecnologia).
Esta inova¸c˜ao permitiu tornar os websites mais interactivos, mas a sua utiliza¸c˜ao esteve confinada apenas a este prop´osito durante um longo per´ıodo. As p´aginas passaram a responder activamente a ac¸c˜oes do utilizador (sendo uma das utiliza¸c˜oes
3
Netscape Communications –http://browser.netscape.com/
Enquadramento do Projecto
mais vulgares a valida¸c˜ao de formul´arios) mas continuaram essencialmente est´aticas. O JavaScript ainda n˜ao era, nesta altura, utilizado para processar dados.
Tamb´em nesta altura (1995–96) surgiram linguagens server-side como o PHP Hypertext Preprocessor (PHP)eActive Server Pages (ASP)e o servidor passou a ter um processamento de dados introduzidos pelo utilizador mais activo. Generalizaram-se as p´aginas dinˆamicas, capazes de responder a inser¸c˜ao de dados ou outros pedidos determinados por ac¸c˜oes do utilizador. As p´aginas tornaram-se aplica¸c˜oes, web ap-plications.
Uma defini¸c˜ao tradicional de web application ´e: um conjunto de p´aginas web logicamente agrupadas e geridas por uma ´unica entidade, que tˆem como pontos de entrada formul´arios de inser¸c˜ao de dados (web forms). Uma web application n˜ao ´e mais do que uma aplica¸c˜ao que ´e acedida atrav´es de um browser. Tˆem geralmente uma arquitectura l´ogica em trˆes (interface, l´ogica de neg´ocio e camada de dados) camadas e est˜ao armazenadas num servidor.
H´a dois tipos de web applications:
• Orientadas `a apresenta¸c˜ao: S˜ao web applications que geram p´aginas web in-teractivas constitu´ıdas por v´arios tipos de linguagens de anota¸c˜ao (por exem-plo: HTML,eXtensible Markup Language (XML)) e que apresentam conte´udo dinˆamico como resposta a pedidos efectuados pelo utilizador.
• Orientadas aos servi¸cos: Uma web application orientada aos servi¸cos imple-menta o ponto de acesso para um ou mais de um web service. S˜ao geralmente clientes de service oriented web applications.
Uma vantagem significativa de implementar uma web application de forma a suportar as funcionalidades padr˜ao dos browsers ´e que estas ter˜ao o mesmo com-portamento independentemente da plataforma e do browser a partir do qual ser˜ao acedidas. No entanto, diferentes implementa¸c˜oes de browsers, devido a diferentes interpreta¸c˜oes dos padr˜oes definidos, tornam por vezes esta tarefa um pouco mais complicada, existindo inclusivamente na web gui˜oes de compatibilidade para os difer-entes browsers como [Smi07].
2.2.3 Web 2.0 e Ajax
O termo web 2.0 descreve uma tendˆencia de utiliza¸c˜ao e de design observada naWorld Wide Web (WWW) com o objectivo de melhorar a criatividade, partilha de informa¸c˜ao e principalmente: a colabora¸c˜ao entre utilizadores. Estes conceitos levaram ao desenvolvimento e evolu¸c˜ao de comunidades online tais como redes so-ciais, wikis e blogues.
Enquadramento do Projecto
O termo tornou-se mais conhecido ap´os a primeira conferˆencia O’Reilly Media Web 2.0 em 2004, e apesar de sugerir uma nova vers˜ao da WWW n˜ao se refere a qualquer evolu¸c˜ao tecnol´ogica, mas apenas a altera¸c˜oes `a forma como os utilizadores se servem da web. De acordo com Tim O’Reilly [O’R06]: “Web 2.0 ´e uma revolu¸c˜ao na ind´ustria do software, causada pela adop¸c˜ao da web como uma plataforma e pela tentativa de entendimento das regras para o sucesso nesta nova plataforma”.
O desenvolvimento da Web 2.0 serve-se muitas vezes de um outro conceito: Ajax. O conceito que hoje conhecemos como Ajax, muitas vezes incorrectamente de-scrito como uma tecnologia, foi originalmente criado para permitir o desenvolvimento de web applications que se assemelhassem ainda mais a aplica¸c˜oes de desktop. Este conceito foi melhor descrito por [Gar05] como um conjunto de v´arias tecnologias que podem ser utilizadas para melhorar a experiˆencia do utilizador de uma dada
web application, introduzindo a capacidade ass´ıncrona de envio de pedidos ou da recep¸c˜ao ass´ıncrona de respostas. As tecnologias mais frequentemente envolvidas s˜ao:
• eXtensible HyperText Markup Language (XHTML) e Cascading Style Sheets (CSS) padr˜ao para a apresenta¸c˜ao;
• interac¸c˜ao dinˆamica atrav´es do DOM;
• troca e manipula¸c˜ao de dados utilizando XML e eXtensible Stylesheet Lan-guage Transformation (XSLT) ouJavaScript Object Notation (JSON);
• pedidos ass´ıncronos utilizando XMLHttpRequest [vK08];
• JavaScript, utilizado para integrar todas estas tecnologias.
´
E importante frisar que o Ajax n˜ao ´e um produto nem uma tecnologia. ´E um termo que descreve a utiliza¸c˜ao de um conjunto de tecnologias para o desenvolvi-mento de web applications com um elevado grau de interactividade. Comparativa-mente `asweb applicationstradicionais, o Ajax introduz uma camada de visualiza¸c˜ao diferente em trˆes importantes pontos:
1. Do lado do cliente existe um motor que serve de intermedi´ario entre a interface da aplica¸c˜ao e o servidor.
2. A actividade do utilizador despoleta chamadas JavaScript em vez de um pedido de p´agina directamente ao servidor.
3. Informa¸c˜ao codificada em XML, em vez de p´aginas HTML, ´e trocada entre o servidor e o cliente.
Enquadramento do Projecto
Isto significa que as p´aginas que utilizam Ajax contˆem um motor do lado do cliente, composto por um conjunto de fun¸c˜oes JavaScript, respons´avel pela comu-nica¸c˜ao com o servidor e por actualizar a interface com o resultado dessa mesma comunica¸c˜ao.
Na Figura 2.3 ilustra-se a natureza ass´ıncrona do Ajax quando comparada com as web applications tradicionais. Como se pode observar, adicionando um mecan-ismo Ajax a umaweb application eliminam-se diversos tempos de espera associados a comunica¸c˜oes com o servidor uma vez que a interface n˜ao fica “bloqueada” `a es-pera da resposta. Obt´em-se assim aplica¸c˜oes com um comportamento mais fluido, eliminando tempos de espera entre cada “clique” e melhorando a experiˆencia do utilizador.
2.3
Offline Web Applications
A informa¸c˜ao gr´afica (bem como folhas de estilo e scripts), tais como as ima-gens que constituem o visual de uma web application, ´e j´a tratada de forma especial pelos cada vez mais avan¸cados sistemas de cache (armazenamento tempor´ario) dos browsers. Mas estes n˜ao s˜ao ainda capazes de guardar conte´udo criado pelo uti-lizador, nem de apresentar informa¸c˜ao independentemente do estado da liga¸c˜ao.
Numa altura onde se fala de servi¸cos de Internet wireless municipalizados [Kha], comunica¸c˜oes 3G e liga¸c˜oes de banda larga a alta velocidade, a liga¸c˜ao `a rede global continua a n˜ao estar permanentemente dispon´ıvel para os utilizadores. Na WWW
encontra-se uma importante parte da informa¸c˜ao e das aplica¸c˜oes utilizadas para criar e editar conte´udos. Por vezes, informa¸c˜ao vital para a produtividade pode desaparecer subitamente do mapa de acesso de um utilizador, quando este entra no metro, num avi˜ao, ou mesmo quando se desloca para uma cidade ou pa´ıs diferente do habitual, onde n˜ao subscreve um plano de acesso que lhe garanta a liga¸c˜ao.
Permitir o acesso offline a estes recursos assume assim a sua importˆancia, porque permitir´a estender o alcance da informa¸c˜ao a locais onde nunca esteve antes, e per-mitir´a tamb´em melhorar o desempenho das web applications, colocando informa¸c˜ao mais perto dos utilizadores, reduzindo a transferˆencia de dados apenas ao essencial.
2.4
Compara¸
c˜
ao
Nas evolu¸c˜oes descritas neste cap´ıtulo 2 pode-se observar que existe um par-alelismo entre a evolu¸c˜ao das arquitecturas tradicionais cliente-servidor e a evolu¸c˜ao a que se assiste na web. O comportamento e arquitectura dos thin-clients assemelha-se ao das p´aginas est´aticas, no sentido em que o browser n˜ao toma parte em qualquer
Enquadramento do Projecto
processamento, e serve apenas como uma plataforma de interac¸c˜ao com o servidor; tal como os clientes descritos na sec¸c˜ao 2.1.1.
A sua pr´oxima evolu¸c˜ao, os fat-clients, trouxeram parte da capacidade de pro-cessamento para o lado do cliente. Na web, foi tamb´em esta a inova¸c˜ao tecnol´ogica a que se assistiu, com a evolu¸c˜ao das tecnologias que permitiram a cria¸c˜ao de ver-dadeiras aplica¸c˜oes, e com a introdu¸c˜ao do Javascript no browser, dando ao cliente a capacidade de processamento de dados. A necessidade da separa¸c˜ao do c´odigo em camadas l´ogicas adv´em da crescente complexidade das web applications. Esta pr´atica permite, entre outras coisas, melhorar o processo de desenvolvimento e a capacidade de manuten¸c˜ao de uma aplica¸c˜ao.
Os fat-clients tˆem tamb´em a capacidade de armazenamento de dados, o que permite a persistˆencia de informa¸c˜oes entre duas sess˜oes e que algumas opera¸c˜oes sejam executadas sem a necessidade de comunica¸c˜ao com o servidor. Este facto pode tamb´em ser uma realidade nasweb applicationscom a adop¸c˜ao das tecnologiasOWA. Neste momento assiste-se a uma utiliza¸c˜ao cada vez maior da web como uma plataforma de desenvolvimento. A capacidade de coopera¸c˜ao na edi¸c˜ao de conte´udos, e a mobilidade proporcionada por esta plataforma s˜ao os principais factores que alimentam esta mudan¸ca, e pela primeira vez, as aplica¸c˜oes tradicionais tˆem com-peti¸c˜ao vinda deweb applications. A prova do reconhecimento da web como plataforma de desenvolvimento pode ser retirada da aposta de empresas como a Adobe e Mi-crosoft, que lan¸caram publicamente ferramentas web complementares a produtos seus, tradicionalmente associados ao desktop – Acrobat.com5 e Microsoft Office
Live6. Dotar estas web applications da capacidade de execu¸c˜ao offline significa
aproximar a web e o desktop reunindo “o melhor de dois mundos”.
As vantagens da mobilidade poss´ıvel atrav´es da web a coopera¸c˜ao na cria¸c˜ao e edi¸c˜ao de conte´udos e a possibilidade de utilizar aplica¸c˜oes sempre actualizadas e sem necessidade de instala¸c˜ao s˜ao algumas das principais vantagens que promovem esta mudan¸ca, que devido `as preocupa¸c˜oes associadas `a usabilidade e experiˆencia do utilizador, est´a fortemente associada ao desenvolvimento de Rich Internet Applica-tion (RIA)s.
5
Adobe Acrobat.comhttp://www.acrobat.com
Enquadramento do Projecto
Figura 2.3: Compara¸c˜ao do modelo de web aplications s´ıncrono, p´aginas est´aticas e in-teractivas abordados nas sec¸c˜oes 2.2.1 e 2.2.2, com o modelo de web applications Ajax (ass´ıncrono) abordado na sec¸c˜ao2.2.3. Figura adaptada dehttp: // www. adaptivepath. com/
Cap´ıtulo 3
Estado da arte
Apesar de o conceito das OWAs n˜ao ser absolutamente novo, as tecnologias que o suportam s˜ao recentes. Neste cap´ıtulo descrevem-se quatro tecnologias que foram tidas como principais candidatas para o desenvolvimento deste projecto. Descrevem-se ainda alguns exemplos de web applications que disponibilizam actualmente fun-cionalidades offline e o processo da escolha da tecnologia a utilizar neste projecto.
3.1
Gears
O Gears1 ´e uma extens˜ao `as funcionalidades do browser introduzido pelo Google
que tem como principal objectivo tornar poss´ıvel a visualiza¸c˜ao de p´aginas de Inter-net mesmo sem uma conex˜ao dispon´ıvel. Encontra-se dispon´ıvel para as platafor-mas Windows, Macintosh e Linux e oferece uma API de Javascript que permite a scripts aceder a um mecanismo de armazenamento local baseado numa base de dados SQLite.
3.1.1 Arquitectura
Esta ferramenta ´e constitu´ıda por trˆes componentes principais:
• LocalServer — Intercepta pedidos de p´aginas web, e serve-as localmente;
• Database — Uma base de dados relacional constru´ıda sobre SQLite;
• WorkerPool — Permite executar opera¸c˜oes de computa¸c˜ao de uma forma ass´ıncrona, sem afectar a capacidade de resposta e fluidez de execu¸c˜ao da web application. Assemelham-se a processos.
Estado da arte
LocalServer
O m´odulo LocalServer ´e uma cache de Uniform Resource Locators (URLs)
controlada pela web application. Quando n˜ao existe uma liga¸c˜ao `a Internet e ´e feito um pedido para um URL presente nesta cache, o LocalServer intercepta-o e responde ao pedido localmente, a partir do disco r´ıgido do utilizador. A aplica¸c˜ao pode utilizar dois tipos diferentes de armazenamento local de URLs:
• ResourceStore – serve para capturar URLs utilizando exclusivamente a API
de Javascript disponibilizada para o efeito. Uma aplica¸c˜ao poder´a criar e utilizar diversos ResourceStores simultaneamente para capturar ficheiros de dados que necessitam de ser endere¸cados por um URL, tal como um ficheiro PDF ou uma imagem.
• ManagedResourceStore – serve para capturar um conjunto deURLsque est˜ao relacionados, e que s˜ao declarado num ficheiro de manifesto (especificado em
JSON) e que s˜ao automaticamente actualizados. O ManagedResourceStore permite que o conjunto de recursos necess´arios para correr umaweb application
seja capturado e mantido actualizado automaticamente.
A principal diferen¸ca entre estes dois tipos de armazenamento de URLs ´e a forma como s˜ao actualizados os seus conte´udos. Os conte´udos de um ManagedResourceStore s˜ao actualizados sempre que a vers˜ao contida no ficheiro de manifesto for alterada, enquanto que os conte´udos de um ResourceStore nunca s˜ao actualizados automati-camente, mas apenas quando for explicitamente ordenado pela aplica¸c˜ao.
O LocalServer ´e capaz de interceptar e servir localmente pedidos de HTTP e HTTPS sempre que se re´unam as seguintes condi¸c˜oes:
1. OURLencontra-se armazenado num ResourceStore ou ManagedResourceStore,
2. O sistema de armazenamento local encontra-se activo (enabled = true). Se o sistema de armazenamento local tiver o atributo requiredCookie o pedido dever´a conter um cookie que lhe corresponda.
O LocalServer n˜ao necessita de monitorizar o estado da liga¸c˜ao para atender aos pedidos. Na verdade, sempre que as condi¸c˜oes previamente enunciadas se verificarem o LocalServer interceptar´a os pedidos e, independentemente do estado da liga¸c˜ao `
a Internet, servi-los-´a a partir do disco r´ıgido local. Caber´a `a aplica¸c˜ao definir qual o modo em que pretende executar um pedido (online ou offline), definindo o valor de verdade da propriedade enabled.
Estado da arte
Database
O m´odulo Database permite guardar dados da web application assegurando a sua persistˆencia. Os dados s˜ao guardados de forma relacional no disco r´ıgido do uti-lizador2de acordo com o modelo de seguran¸ca estabelecido pelo Gears3, significando
que uma aplica¸c˜ao n˜ao pode aceder a conte´udos fora do seu dom´ınio.
WorkerPool
Nos web browsers uma opera¸c˜ao pesada de computa¸c˜ao pode tornar a interface lenta e tornar menos agrad´avel a experiˆencia do utilizador. O m´odulo WorkerPool permite correr opera¸c˜oes em background sem bloquear a interface com o utilizador. Os scripts executados numa WorkerPool n˜ao activam os mecanismos de seguran¸ca do browser que mostram a mensagem “A script on this page may be busy, or may have stopped responding”.
O WorkerPool comporta-se como um conjunto de processos em vez de threads. Os Workers n˜ao partilham qualquer estado de execu¸c˜ao, o que significa que uma altera¸c˜ao a uma vari´avel num Worker n˜ao afecta em nada a execu¸c˜ao de outro Worker. Al´em disso, os Workers n˜ao herdam automaticamente nenhum c´odigo dos seus pais. Cada Worker ´e membro de um WorkerPool, e os Workers podem in-teragir entre si enviando mensagens em formato de texto ou JSON. No entanto h´a tamb´em algumas limita¸c˜oes: os Workers n˜ao tem acesso ao DOM, e objectos como window ou document n˜ao se encontram acess´ıveis. Isto ´e consequˆencia de os Workers n˜ao partilharem o estado de execu¸c˜ao. Mas tˆem acesso a todas as fun¸c˜oes built-in do Javascript. A maioria das funcionalidades do Gears pode tamb´em ser acedida atrav´es de uma vari´avel global especial definida como google.gears.factory. Para outras funcionalidades espec´ıficas os Workers podem “pedir” `a p´agina principal para continuar a execu¸c˜ao atrav´es do envio de mensagens.
Outras funcionalidades
• HttpRequest – Este m´odulo implementa a especifica¸c˜ao W3C XmlHttpRe-quest, definida em [vK08], tornando-a dispon´ıvel para os workers e para a p´agina principal.
• Timer – Este m´odulo implementa a especifica¸c˜ao de timers tal como descrito por [Hic08], e torna-os dispon´ıveis para os workers e para a p´agina principal
2
Consultar: http://code.google.com/apis/gears/api_database.html#directories
Estado da arte
• Factory – Esta classe ´e utilizada para instanciar todos os outros objectos da API do Gears atrav´es do seu m´etodo create. Este m´etodo pode ser utilizado com os seguintes parˆametros:
– beta.database – beta.httprequest – beta.localserver – beta.timer
– beta.workerpool
3.1.2 Goggle Gears em dispositivos m´oveis
O Gears est´a tamb´em dispon´ıvel em dispositivos Windows Mobile 5 e 6.
Os dispositivos m´oveis est˜ao, pela sua natureza, frequentemente desconectados da Internet. Mesmo quando possuem uma liga¸c˜ao as latˆencias na transferˆencia de dados em redes m´oveis tornam as aplica¸c˜oes pouco flu´ıdas, mas o Gears permite ultrapassar este obst´aculo.
O Gears funciona exactamente da mesma forma em dispositivos m´oveis equipados com o Windows Mobile 5 e 6 como num computador comum. Se uma aplica¸c˜ao tiver sido implementado com suporte para o Gears, ent˜ao tamb´em estar´a preparada para ser executada num dispositivo m´ovel, mas as limita¸c˜oes dos browsers dispon´ıveis para dispositivos m´oveis tˆem que ser consideradas. Isto significa prever as condi¸c˜oes que permitam uma boa usabilidade devido aos pequenos ecr˜as destes dispositivos, bem como o seu suporte limitado dos padr˜oes do DOM, CSS e JavaScript.
3.2
Adobe AIR
O Adobe AIR4´e um runtime compat´ıvel com diversos browsers e sistemas
opera-tivos, que pretende dar aos programadores a possibilidade de combinar diversas tec-nologias de produ¸c˜ao de conte´udos para a Internet no desenvolvimento deRich Inter-net Application (RIA)s. O Adobe AIR mant´em uma rela¸c˜ao com o browser, mas es-tende as suas capacidades e tecnologias, permitindo o desenvolvimento de aplica¸c˜oes tamb´em para o ambiente de trabalho, com janelas em tudo semelhantes `as do sis-tema operativo. Segundo a Adobe, o objectivo ´e complementar o browser dando aos utilizadores (mas essencialmente aos programadores e equipas de desenvolvi-mento) a escolha sobre como distribuir as suas aplica¸c˜oes. Para este efeito o Adobe AIR tem uma aproxima¸c˜ao diferente do Gears. Em vez de “estender” o browser acrescentando-lhe funcionalidades, o AIR permite tamb´em o desenvolvimento de
Estado da arte
aplica¸c˜oes que se destinam a ser executadas fora do ambiente do browser, mas uti-lizando as tecnologias comuns da Internet (por exemplo: HTML, CSS, JavaScript, Flash, Flex)[CDGH08].
A utiliza¸c˜ao desta tecnologia permite utilizar o browser ou o pr´oprio runtime Adobe AIR, como plataforma de execu¸c˜ao da aplica¸c˜ao.
Na Tabela 3.1 faz-se uma compara¸c˜ao das funcionalidades dispon´ıveis de acordo consoante se escolha o browser ou o desktop como plataforma base para a aplica¸c˜ao. Uma vez que as aplica¸c˜oes Adobe AIR na plataforma desktop tˆem um car´acter persistente (s˜ao instaladas no computador do utilizador), o Adobe AIR tem um modelo de seguran¸ca que se assemelha com o das tradicionais aplica¸c˜oes desktop [Ada08]. Este modelo ´e analisado nas sec¸c˜oes 3.2.1 e 3.2.2. O ambiente em que ´e executado o browser ´e restringido `a execu¸c˜ao de web applications que podem ser de v´arias origens (incluindo de origens an´onimas ou sem confian¸ca). O Adobe AIR proporciona acesso a capacidades como acesso a ficheiros, que necessitam da confian¸ca do utilizador.
• HTML – O desenvolvimento de aplica¸c˜oes para o Adobe AIR pode ser feito com recurso a tecnologias de HTML e Ajax comuns, utilizando as linguagens de markup existentes, distribu´ıdas como texto e interpretadas em execu¸c˜ao (runtime);
• Flash – Outra alternativa ser´a a utiliza¸c˜ao da linguagem Flash. Permite a renderiza¸c˜ao de gr´aficos vectoriais e ´audio/v´ıdeo com suporte nativo. Utiliza ActionScript para adicionar maior interactividade com o utilizador;
• Flex – OFlex ´e uma framework open source para o desenvolvimento de RIAs usando Flash. As aplica¸c˜oes Flex s˜ao na realidade Flash, sendo a principal diferen¸ca o ambiente de desenvolvimento.
Como resultado, uma aplica¸c˜ao AIR poder´a ser implementada:
• Baseada em Flash ou Flex (aplica¸c˜oes cujo conte´udo base ´e em ShockWave Flash (SWF));
• Baseada emFlashouFlex, tamb´em comHTMLouPortable Document Format (PDF). Aplica¸c˜oes cujo conte´udo de base ´e emFlash/Flex (SWF) com HTML
(HTML, JavaScript, CSS) ou conte´udo PDF inclu´ıdo;
• Baseada em HTML. Aplica¸c˜oes cujo conte´udo base ´e em HTML, Javascript,
CSS;
Estado da arte
Os utilizadores interagem com uma aplica¸c˜ao AIR da mesma forma que interagem com outras aplica¸c˜oes com janelas nativas do seu sistema operativo. O runtime ´e instalado uma vez no computador do utilizador, e a partir desse momento, todas as aplica¸c˜oes AIR ter˜ao o mesmo aspecto que qualquer outra aplica¸c˜ao para o desktop.
3.2.1 Seguran¸ca
Permitir que umaweb applicationaceda ao disco de armazenamento do utilizador pode comprometer seriamente a sua seguran¸ca. Neste sentido o Adobe AIR tem suporte para assinaturas digitais (Secure Sockets Layer (SSL)) que podem ser com-pradas pelas equipas de desenvolvimento que o desejem, e cujos certificados ser˜ao apresentados ao utilizador no momento da instala¸c˜ao. Um outro aspecto ainda relativo `a seguran¸ca ´e o mecanismo de isolamento de cada ambiente (sandbox ).
3.2.2 Assinatura do c´odigo
O runtime AIR exige que todas as aplica¸c˜oes estejam digitalmente assinadas. As assinaturas digitais de c´odigo s˜ao um processo que visa garantir a integridade da aplica¸c˜ao e a identidade do seu autor, no momento da instala¸c˜ao. As equipas de desenvolvimento podem “assinar” uma aplica¸c˜ao utilizando um certificado atribu´ıdo por uma Entidade Certificadora (Certification Authority) ou atrav´es de um certifi-cado individual (self signed certificate). Neste momento o Adobe AIR suporta como entidades certificadoras a Verisign e a Thawte [Ado08].
O instalador apresenta o nome de quem publica a aplica¸c˜ao quando o c´odigo tiver sido assinado com um certificado que apresente confian¸ca, ou que esteja encadeado com um certificado que tenha j´a sido aceite no computador em que se est´a a instalar a aplica¸c˜ao.
As equipas de desenvolvimento podem tamb´em assinar as aplica¸c˜oes com um certificado auto-atribu´ıdo (um certificado criado por elas pr´oprias), mas neste caso o instalador apresentar´a estas aplica¸c˜oes como sendo de uma origem n˜ao verificada. O AIR utiliza a infraestrutura p´ublica de chaves [Ent07] suportada pelo arquivo local do sistema operativo. Para que a origem da aplica¸c˜ao seja reconhecida, o computador onde a aplica¸c˜ao AIR est´a a ser instalada tem que confiar directamente no certificado que foi utilizado para assinar a aplica¸c˜ao, ou confiar num certificado que esteja num encadeamento l´ogico de certificados confiados, e que se ligue desta forma ao certificado utilizado para assinar a aplica¸c˜ao.
Todas as aplica¸c˜oes AIR tˆem caracter´ısticas em comum, independentemente da tecnologia utilizada para o seu desenvolvimento (HTML/Flex/Flash). No ˆambito de uma aplica¸c˜ao AIR existem um conjunto de APIs que est˜ao dispon´ıveis e que tornam poss´ıvel o acesso ao sistema local (leitura e escrita) e a recursos de rede que
Estado da arte
de outra forma nunca estariam acess´ıveis a partir de uma web application comum. Cada aplica¸c˜ao AIR possui tamb´em diferentes n´ıveis de isolamento, chamados secu-rity sandboxes, dependendo do tipo de conte´udo que est´a a ser carregado e do seu objectivo:
• Isolamento ao n´ıvel da aplica¸c˜ao5 – ´E a raiz de cada aplica¸c˜ao AIR. Este
n´ıvel de isolamento permite o acesso a APIs privilegiadas e espec´ıficas do AIR. Em contrapartida, ´e negado o acesso a algumas APIs que poderiam ser facilmente utilizadas de forma maliciosa contra o utilizador final. Importa¸c˜ao dinˆamica de conte´udos remotos ´e geralmente proibido e as t´ecnicas e mecan-ismos de gera¸c˜ao dinˆamica de c´odigo s˜ao fortemente restringidas. Apenas conte´udo carregado directamente da directoria base da aplica¸c˜ao poder´a ser colocado neste n´ıvel de isolamento.
• Isolamento n˜ao espec´ıfico da aplica¸c˜ao6 – cont´em todo o outro conte´udo que n˜ao tenha sido carregado directamente para o isolamento da aplica¸c˜ao. Isto inclui conte´udo local e remoto. Este tipo de conte´udo n˜ao tem acesso directo `as APIs do AIR e rege-se pelas mesmas regras tal como se tivesse sido carregado por um browser a partir da mesma localiza¸c˜ao (por exemplo, HTML carregado a partir de um dom´ınio remoto comporta-se da mesma forma que se fosse acedido a partir do browser ).
3.3
Mozilla Prism
3.3.1 XML User Interface Language
O eXtensible User Interface Language (XUL), ´e uma linguagem de anota¸c˜ao baseada em XML desenvolvida pela Mozilla Foundation que opera em aplica¸c˜oes Mozilla multi plataforma, tal como o Firefox. O motor Gecko ´e a ´unica imple-menta¸c˜ao completa desta linguagem, que foi desenhada sobre padr˜oes web comuns, comoCSS, JavaScript e oDOM, e permite o desenvolvimento de interfaces gr´aficas utilizando elementos pr´e-definidos tais como window, box, page, textbox, radio button, entre outros . Infelizmente oXULn˜ao possui qualquer especifica¸c˜ao formal ou implementa¸c˜oes de inter-operabilidade para outros motores que n˜ao o Gecko. No entanto a sua implementa¸c˜ao ´e licenciada em c´odigo aberto, pelas licen¸casGNU Gen-eral Public License (GPL), GNU Lesser General Public License (LGPL) e Mozilla Public License (MPL).
Enunciam-se algumas caracter´ısticas desta linguagem:
5
NT.: application sandbox
Estado da arte
Liguagem de anota¸c˜ao poderosa baseada em componentes (widgets): O ob-jectivo do XUL ´e permitir a constru¸c˜ao de aplica¸c˜oes multi-plataforma, em claro contraste com oDynamic HyperText Transfer Protocol (DHTML)que se destina ao desenvolvimento de p´aginas web. Por esta raz˜ao o XUL est´a orien-tado a componentes tais como janelas, bot˜oes, e etiquetas, em vez de p´aginas, cabe¸calhos de texto, e liga¸c˜oes de hipertexto. Investir tempo e esfor¸co para atingir este mesmo resultado em aplica¸c˜oes baseadas emDHTML, compromete frequentemente a complexidade e desempenho da aplica¸c˜ao.
Baseado em padr˜oes OXUL ´e um dialecto XMLbaseado no padr˜ao W3C XML 1.0. As aplica¸c˜oes escritas em XUL s˜ao tamb´em baseadas em especifica¸c˜oes W3C adicionais, como HTML 4.0, CSS, DOM n´ıvel 1 e 2; JavaScript 1.5, incluindo ECMA-262 Edition 3 (ECMAscript).
Portabilidade entre plataformas: Tal como HTML, o XUL foi desenhado para ser independente da plataforma em que ´e utilizado, tornando as aplica¸c˜oes facilmente port´aveis entre sistemas operativos nos quais o Mozilla ´e suportado. Uma vez que o XUL oferece um n´ıvel de abstrac¸c˜ao dos componentes gr´aficos de interface que disponibiliza, implementa a premissa “um c´odigo para todas as plataformas”. A interface gr´afica de todos os produtos centrais Mozilla (browser, instant messenger, livro de endere¸cos), ´e escrita em XUL, com um ´
unico c´odigo base que suporta todas as plataformas Mozilla.
Separa¸c˜ao entre o n´ıvel de apresenta¸c˜ao e a l´ogica de neg´ocio: Uma das maiores preocupa¸c˜oes no desenvolvimento para a Internet ´e a forte liga¸c˜ao entre estas duas camadas (interface e l´ogica). Isto constitui um problema sig-nificativo no desenvolvimento de grandes aplica¸c˜oes, especialmente quando o desenvolvimento ´e feito em ambientes de equipa, porque as capacidades de de-senvolvimento destas duas partes da aplica¸c˜ao est˜ao muitas vezes espalhadas por diferentes elementos. OXULpermite uma clara distin¸c˜ao entre a defini¸c˜ao da aplica¸c˜ao cliente e da l´ogica de implementa¸c˜ao (XUL, eXtensible Binding Language (XBL) e JavaScript), apresenta¸c˜ao (CSS e imagens), internacional-iza¸c˜ao (Document Type Definitions (DTDs) e etiquetas de texto em l´ınguas espec´ıficas guardados em ficheiros .properties). O esquema gr´afico e apre-senta¸c˜ao de uma aplica¸c˜ao XUL pode ser alterado de forma independente da sua l´ogica ou implementa¸c˜ao, e a aplica¸c˜ao pode ainda ser traduzida (interna-tionalization) de forma independente da sua l´ogica, implementa¸c˜ao ou apre-senta¸c˜ao. Este grau de separa¸c˜ao resulta em aplica¸c˜oes que s˜ao mais f´aceis de manter pelos programadores e facilmente adaptadas por designers e tradutores.
Estado da arte
F´acil adapta¸c˜ao Outro benef´ıcio que adv´em do n´ıvel de separa¸c˜ao entre l´ogica de neg´ocio e apresenta¸c˜ao oferecido pelo XUL ´e a facilidade com que se pode adaptar uma aplica¸c˜ao para diferentes clientes ou grupos de utilizadores. Um programador pode utilizar a mesma aplica¸c˜ao base e adapt´a-la consoante as necessidades, atrav´es de diferentes temas (skins) e ficheiros de l´ınguas. Desta forma, uma aplica¸c˜ao escrita e desenvolvida em Inglˆes pode ser rapidamente traduzida para Portuguˆes e distribu´ıda com outra aparˆencia mais apropriada ao cliente alvo.
3.3.2 Prism
O Mozilla Prism´e um browser simplificado e “interpretador” de XUL (tamb´em designado por XULRunner) que acolhe web applications sem a interface gr´afica ha-bitual de um browser. Baseia-se num conceito designado por Site Specific Browser (SSB). Um SSB ´e uma aplica¸c˜ao com um browser embebido, desenhado para exe-cutar apenas uma web application. N˜ao possui os menus e barras de ferramentas habituais. Um SSB tem uma integra¸c˜ao com o sistema operativo e com o desktop muito mais estreita do que uma web application acedida atrav´es de um browser, uma vez que ´e executado em janela pr´opria.
O Prism resulta de uma experiˆencia da Mozilla e visa reduzir as diferen¸cas entre as desktop applications tradicionais e as web applications. Um dos aspectos focados ´e a experiˆencia do utilizador. Numa apresenta¸c˜ao oficial ´e dito que “[o Prism] pretende ser uma ponte entre as diferen¸cas que existem entre as aplica¸c˜oes tradicionais de desktop e as web applications, explorando novos modelos de usabilidade, enquanto que a linha que as separa se continua a definir” [Lab07].
3.4
HTML 5
A especifica¸c˜ao HTML 5 [Hic08], que se encontra em fase de desenvolvimento pelo grupo WHATWG, pretende ser uma norma de substitui¸c˜ao dos padr˜oes HTML 4, XHTML 1.x e do DOM2 HTML. Uma das propriedades que o distingue das tec-nologias que pretende substituir ´e precisamente o suporte para OWA e armazena-mento de dados no cliente de uma forma relacional. N˜ao sendo propriamente uma tecnologia –mas antes uma especifica¸c˜ao –´e aqui mencionada por ter servido como referˆencia a diversas implementa¸c˜oes de funcionalidades offline, e por se considerar que venha a ter um impacto significativo nas implementa¸c˜oes de diversos browsers. Dion Almaer defendeu no seu blogue que o Gears era uma implementa¸c˜ao do
HTML5. No seu artigo “Gears as a bleeding-edge HTML 5 implementation” [Alm08] o autor diz que ambos –o Gears e o HTML 5 –pretendem dar `a web caracter´ısticas
Estado da arte
semelhantes e n˜ao encontrar motivo de “competi¸c˜ao” entre as duas, mas que en-quanto o HTML 5 ´e uma especifica¸c˜ao o Gears ´e uma implementa¸c˜ao.
No entanto, tamb´em ´e verdade que oHTML 5 cobre muitos outros pontos para al´em das OWA que saem completamente fora do ˆambito do Gears. Se esta es-pecifica¸c˜ao atingir um estado de maturidade que possibilite a sua adop¸c˜ao pelos principais browsers, tornando nativo do browser o suporte OWA, ent˜ao deixar´a de fazer sentido a existˆencia de uma extens˜ao como o Gears.
A especifica¸c˜ao HTML 5 disponibiliza duas APIs relevantes para o tema das
OWA:
1. Uma base de dados baseada em SQL que permite o armazenamento de dados do lado do cliente.
2. Uma “cache”HTTPque garante a disponibilidade das aplica¸c˜oes mesmo quando o utilizador n˜ao possui uma liga¸c˜ao `a Internet.
Estas caracter´ısticas s˜ao as bases da tecnologia das OWA e tˆem correspondˆencia com os pontos analisados nas sec¸c˜oes 3.1.1 e3.1.1
3.5
Web applications que usam funcionalidades offline
Nesta sec¸c˜ao apresentam-se algumas web applications que actualmente disponi-bilizam funcionalidades offline. Estas aplica¸c˜oes foram escolhidas para uma an´alise mais pormenorizada por utilizarem o Gears, que tal como descrito na sec¸c˜ao 4, foi a tecnologia escolhida para o projecto.
3.5.1 Google Reader e Google Docs
O Google Reader7 ´e um leitor de feeds RSS. Permite gerir a subscri¸c˜ao de v´arios
sites simultaneamente que disponibilizem conte´udos neste formato e foi a primeira web application da Google com uma vers˜ao offline publicamente acess´ıvel (desde Junho de 2007).
O Google Reader implementa o modo “utilizador decide”, oferecendo na sua interface um bot˜ao que permite alternar entre os modos online e offline.
O Google Docs8 ´e uma web application que permite a cria¸c˜ao e edi¸c˜ao de
doc-umentos de texto, folhas de c´alculo e apresenta¸c˜oes. Era j´a p´ublico desde Janeiro de 2008 que o Google estava a desenvolver uma vers˜aoOWA desta aplica¸c˜ao, mas o acesso a uma vers˜ao experimental s´o foi poss´ıvel a partir de 31 de Maio de 2008.
7
Google Reader -http://reader.google.com/