Este artigo tem como objectivo expor a arquitetura de aplicações multiplataforma para dispositivos móveis.

Introdução

Tem-se registado uma explosão no número de smartphones no mercado e consequentemente começa a haver uma necessidade de apoiar todo um conjunto de plataformas populares tais como IOS, Android, WP8,Blackberry, etc. Ao se programar uma aplicação numa determinada plataforma faz com que exista um aumento no esforço, nos recursos, e até mesmo no custo necessário para tal. Uma arquitectura multiplataforma seria uma solução para tornar esta difícil tarefa em algo muito mais acessível, e com a possibilidade de ser desenvolvida usando métodos Web ou híbridos de desenvolvimento de aplicações. Neste artigo iremos abordar vários tipos de arquitecturas de desenvolvimento para dispositivos móveis e ver quais deles é que permitem um desenvolvimento multiplataformas. Para além disto também veremos alguns frameworks criados por pessoas, e que levam esta ideia um passo mais adiante fornecendo soluções out of the box para sustentar a multiplataforma, com pouca ou nenhuma alteração no código.

 

Mobile Application Development

De modo a compreendermos a arquitectura multiplataformas temos que primeiro compreender os tipos de estratégias usadas no desenvolvimento de aplicações para dispositivos móveis.

  • Native Apps

Aplicações desenvolvidas que são específicas de uma determinada plataforma. Estas aplicações são desenvolvidas usando código nativo “sdks” e terão um código muito relacionado com a plataforma sobre a qual foram escritas.

  • Web Apps

Aplicações desenvolvidas usando tecnologias web padrão: HTML5, JavaScript e Css.

  • Hybrid Apps

No caso destas aplicações, a maior parte das mesmas são desenvolvidas usando padrões de Web e envolvidas numa “Shell” nativa. As “shells” permitem acesso a características especificas das plataformas “mobile” tais como GPS, camera, ou a aparência fornecida pelo UI da plataforma, etc

O diagrama abaixo mostra a comparação entre os vários tipos de estratégias de desenvolvimento de aplicações e indica a sua aptidão multiplataforma, crescente da esquerda para a direita.

HybridMobArchCompare.png

Arquitetura de aplicações multiplataforma para dispositivos móveis & Hybrid/Web Apps

“Hybrid Apps” combina as vantagens de desenvolvimento de ambos os tipos de aplicações, “Web” e “Native”, e é a melhor escolha para criar aplicações multiplataforma. Abaixo estão a vantagens de usar tecnologia hibrida de desenvolvimento de aplicações:

  • Multiplataforma & Partilha de código - “Code” apenas uma vez e usamo-lo para fazer o “deploy” em várias plataformas de dispositivios móveis. Usa o mesmo código de interface “UI” HTLM / third party library code para múltiplos dispositivos.
  • Chamadas nativas usando a “Native Shell”
  • O modo offline permite ter acesso à aplicações mesmo que a internet não se encontre disponível.
  • Permite que um grande número de utilizadores possa obter a aplicação devido ao seu carácter multiplataforma.
  • Pode-se aproveitar o dispositivo móvel para processamento, o que não é possível com aplicações web.
  • Distribuição através da AppStore transmite uma sensação nativa relativamente aos updates (?).
  • Pode-se oferecer notificações relativamente a uma determinada aplicação e seus respectivos updates.

“Web Apps” permitem uma aptidão multiplataforma mas de forma limitada. Os desenvolvedores não serão capazes de tirar partido do UI nativo, para além disso o processamento local não será uma boa opção para aplicações cuja performance seja critica. No caso de o desempenho não ser um problema e apenas se quere hospedar uma aplicação web então a componente multiplataforma fornecida é suficiente sem por em causa o uso de “third party Framework” e ainda potenciar a utilização de conhecimento já adquirido na área das “web Technologies”.

Native Apps oferecem vantagens multiplataforma muito limitadas ou até mesmo nenhumas, e por este motivo é que não são aconselháveis para uma arquitetura multiplataforma. Apesar disto, a utilização de WP8 cria uma margem para a partilha de código. A reutilização de código C# para outras plataformas de desenvolvimento pode ser conseguido utilizando Xamarin. Para além disto pode-se partilhar código para o Windows 8 usando técnicas como Portable Class Library, Windows Runtime API, etc. Para mais referências : Maximize code reuse between Windows Phone 8 and Windows 8

Hybrid-Adv.png

Arquitetura de aplicações multiplataforma & Partilha de Código

Numa arquitetura multiplataforma usando métodos híbridos, a aplicação é desenvolvida usando tecnologias Web tais como HTML5, Javascript e CSS mas que correm dentro da “Shell” nativa da plataforma Mobile. As aplicações hibridas usam um tipo de web control/ web app template para apresentar o Web UI de maneira a que seja possível “codifica-lo” em tecnologias Web. Graças à sofisticação cada vez maior de ferramentas multiplataforma, o desempenho e melhorado drasticamente, e tanto o aspecto como a sensação que temos ao utilizar a aplicação é quase tao bom como ao UI nativo.

HybridArch.png

You can implement a Cross Platform Architecture using following methods:

Hybrid Local App

Criamos uma aplicação num Web template e empacotámo-lo como a nossa aplicação nativa. Por exemplo para criar uma aplicação WP8 usando um Javascript Template. Nesta arquitetura podemos fazer uso do poder de processamento do dispositivo levando a um desempenho melhor, apesar de não ser tao bom como uma nativa. Para além disso as chamadas para servidores serão evitadas o que funcionará como um booster de performance. O deploying irá necessitar de uma notificação de update para o utilizar da mesma forma que acontece para aplicações nativas. Para criar uma aplicação hibrida WP8, usamos o In Visual Studio 2012 -> New Project-> JavaScript- Windows Store(Template). Isto dar-nos-á um controlo completo sobre JavaScript, HTML5 & CSS para o design do UI e para chamar as classes da “shell” nativa através do JavaScript API fornecido pelas ferramentas multiplataforma abaixo mencionadas. Para começarmos com o nosso primeiro programa “Hello World” com o JavaScript Template, ver Create a "Hello, world" app

Hybrid Server App

Podemos criar uma aplicação Web Mobile, hospeda-la num servidor e simplesmente chamar o url na shell nativa. Nesta abordagem o processamento será todo feito no servidor. Podemos melhorar o desempenho fazer um “local caching”, apesar de não ser o ideal para aplicações cujo desempenho é crítico. Mudanças no Deploying serão fáceis pois basta mudar o código e por no servidor. Para criar uma aplicação Hybrid WP8 usando esta abordagem:

  • Visual Studio 2012-> New Project -> Windows Phone Application (Silverlight). Isto irá criar uma aplicação nativa WP “shell”.
  • Adicionamos um controlo WebBrowser para a página da aplicação e direcionamo-lo para a aplicação Web hospedada no servidor.

Com isto a nossa aplicação multiplataformas fica instantaneamente pronta.

Third Party Frameworks

Apache Cordova PhoneGap, Sencha Touch & Xamarin Mobile são exemplos de ferramentas multiplataforma que fornecem o “embrulho” sobre as APIs. Isto ajuda na compatibilidade multiplataforma. Escrevemos o codigo numa linguagem e compilamos para as plataformas (?) alvo como WP, iPhone, androir ou outros dispositivos suportados. A partilha de código é levada a outro nível usando este “Framework”. Numa aplicação hibrida típica, apenas o código reutilizável e a aptidão para multiplataforma e que são limitados pela tecnologia web utilizada. Mas agora a funcionalidade nativa pode ser utilizada usando estes frameworks e portanto fazendo com que aplicações hibridas sejam verdadeiramente multiplataforma e muito mais reutilizáveis.

Proporciona algumas das librarias JavaScript que podem ser invocadas, com código específico do dispositivo para as respectivas librarias JavaScript. Isto combinado com um UI Framework como por exemplo JQuery ou Sencha Touch cria uma grande aplicação multiplataforma WP8. Usamos JavaScript para aceder ao API nativo, como geolocation, camera, storage, etc. usando uma única chamada da API da plataforma mobile. Para mais informação ver : Cordova (PhoneGap) and Windows Phone 8
Um exemplo de como começar com WP8 e PhoneGao pode ser encontrado aqui : Camera Pic & GeoTagging App using PhoneGap

Proporciona valiosos HTLM5 framework e api wrappers nativos. “Codificamos” uma vez e compilamos para uma diferente plataforma mobile fazendo dela uma aplicação multiplataformas. Para mais informação ver Sencha Touch and Windows Phone 8

Deixa-nos usar lógica já existente de aplicações WP8 ou Windows 8 que está em C# e pode partilhar este condido em varias outras plataformas. O compilador do Xamarin bumdles o. Net e cria um executável natico, packaged como uma aplicação IOS ou Android. O Xamarin estende a partilha de codigo não so para varias plataformas mobile mas também com codigo de Windows 8. Para mais informação ver Xamarin Mobile and Windows Phone 8 A seguinte documentação proporcionará uma perceção profunda de como criar uma aplicação multiplataforma usando Xamarim: Building Cross Platform Applications 

É um Touch-Optimized HTML5 Web Ui Framework baseado em no aprimoramento progressivo e em responsive web design (RWD)principles .(?) Podemos criar uma multiplataforma usando este Framework. Para mais informação ver: JQuery Mobile and Windows Phone

Conclusão

Vimos quais e que são as vantagens da arquitetura multiplataforma e como e que a podemos implementar usando varias estratégias de desenvolvimento. Não existe uma metodologia que é sempre melhor, devemos utilizar aquela que serve melhor os nossos prepósitos. Arquitetura multiplataforma e altamente recomendável para aplicações empresariais visto que diminui o tempo necessário para chegar ao mercado pois ao utilizarmos código já existente podemos chegar aos nossos clientes alvos de plataformas diferentes de uma maneira muito mais rápida.

 

Referências:

Cordova(*) 
Xamarin (*)
What is a Hybrid Mobile App? (*)
Sencha(*)

(*) Artigos disponíveis apenas em Português

Credits:
Originally was contributed on 9 March 2013‎ by saramgsilva