O projeto de arquitetura de Open Web Apps consiste dos seguintes elementos:
-
Instalação baseada em servidor web
-
Runtime web
-
Serviços de suporte integrado
Instalação baseada em servidor web
Aplicativos podem ser instalados do servidor que os hospeda ("auto-hospedagem") ou de uma loja. A Mozilla está planejando lançar o Mozilla Marketplace para aplicativos em 2012. Outras lojas de aplicativos tamém podem ser criadas usando esta arquitetura. Aplicativos podem ser gratuitos ou pagos. Lojas podem suportar confirmação de compras para assegurar que aplaicativos são executados apenas por usuários que realizaram a compra. O Mozilla Marketplace irá suportar isso.
O Mozilla Marketplace suportará estas atividades:
- Desenvolvedores podem enviar aplicativos baseados em HTML5 informando a localização do arquivo de manifesto.
- Desenvolvedores podem definir um preço para seus aplicativos.
- Usuários podem instalar aplicativos que estão associados à suas contas por um recibo digital.
- Aplicativos podem validar o recibo do usuário durante o tempo de execução. Este mecanismo suporta devoluções e compras de tempo limitado.
Runtime Web
Embora aplicativos possam rodar em qualquer navegador moderno, muitos usuários esperam uma experiência "nativa", mesmo para aplicativos baseados em web. Uma runtime web (WebRT) é um agente usuário centrado em aplicativos (em contraste com um agente usuário centrado em navegador como o Firefox).
Uma WebRT:
- Instala um ícone no sistema operacional nativo.
- Pode verificar e então iniciar o aplicativo do sistema operacional nativo em uma janela sem bordas.
- Mostra o aplicativo no ambiente nativo como uma aplicação comum em execução (de maneira em que alternar aplicações e monitorar o trabalho funcione normalmente).
- Integra-se com as capacidades do dispositivo. O projeto WebAPI está progredindo para suportar estas APIs diretamente no Gecko (a engine de layout do Firefox).
- Provê uma inicialização discreta quando o usuário já está logado com o seu BrowserID (atraves do Firefox ou outro aplicativo). Quando um aplicativo é iniciado, ele pode conferir a validade do recibo. Se o usuário já está logado com o BrowserID, o aplicativo inicia imediatamente.
Uma versão futura do Firefox irá incorporar uma WebRT. Você pode testar ele agora (junho de 2012) utilizando Firefox Nightly para Windows e Mac (e logo, para Android). Note que o Firefox Nightly é apenas para teste.
Para navegadores que não usam a WebRT, há a HTML5 WebRT, disponível em https://apps.persona.org/include.js. Esta WebRT não tem todas as capacidades nativas listadas acima. Você pode testar com qualquer navegador listado aqui: https://apps.mozillalabs.com/appdir/
Uma prévia WebRT estava disponível como uma extensão Firefox (Mozilla Labs App Runtime para Firefox), porém foi descontinuada. Uma WebRT Android prévia que usava PhoneGap também foi descontinuada.
Mostrando páginas na runtime Web
- Você pode mostrar qualquer URL no aplicativo. A origem de um link sendo aberto não é uma consideração, mas lembre que você pode mandar seus usuários à um site sem maneira de voltar a não ser fechando o aplicativo e reiniciando. Então você deve ter certeza que eles podem navegar.
- Muitos links abrem no aplicativo.
- Um click em
<a target="_blank" href="...">
vai abrir no navegador padrão, fora do aplicativo. - Uma chamada para
window.open(url)
abre no app. - Uma chamada para
window.open(url, "_blank")
também abre no aplicativo (mas este comportamento pode mudar).
Serviços de suporte integrado
Mozilla disponibiliza serviços que trabalham em conjunto para suportar o ecossistema dos aplicativos.
BrowserID
A arquitetura dos aplicativos integra BrowserID de múltiplas maneiras:
- Desenvolvedores e usuários irão logar no site do marketplace usando BrowserID.
- Recebimentos para compras do marketplace estão ligadas à o BrowserID de identidade do comprador.
- Aplicativos que implemetam suporte à BrowserID podem instantaneamente cadastrar usuários.
Sincronização de aplicativos
Mozilla está implementando um serviço de sincronização de apps baseado em nuvem chamado Apps in the Cloud. Este serviço pode armazenar todos os recebimentos de compra relacionados a uma certa identidade BrowserID (incluindo de lojas não-Mozilla que implemetam BrowserID). Ele também pode sincronizar estes recebimentos para todos os dispositivos de um usuário, permitindo que aplicativos comprados em um dispositivo sejam utilizados em outros sem necessidade de uma nova compra.