Succesul extraordinar și ratele de adopție spectaculoase ale platformelor mobile moderne sunt extrem de strâns legate de numărul și calitatea aplicațiilor mobile care rulează pe aceste platforme. În condițiile competitive foarte dure ale app store-urilor, flexibilitatea și viteza de implementare au devenit criterii de selecție dure în lumea dezvoltatorilor de aplicații mobile. O consecință directă a acestei stări de fapt este dezvoltarea accelerată și spectaculoasă a tehnologiilor ce permit utilizarea unei singure baze de cod pentru obținerea cvasi-simultană a versiunilor unei aplicații mobile pe mai multe platforme, cunoscute și sub numele de tehnologii multiplatformă.
Pe lângă o asemenea tehnologie de dezvoltare multiplatformă, premisele eficienței în dezvoltarea de aplicații mobile sunt asigurate de alte două ingrediente critice: o platformă pentru serviciile de back-end (cele care deservesc efectiv aplicația mobilă client) și un proces de dezvoltare complet și coerent (așa numitul Application Lifecycle Management sau ALM). Xamarin este una dintre tehnologiile multiplatformă care au cunoscut în ultimii ani un succes deosebit. Împreună cu Microsoft Azure (care asigură suportul atât pentru servicii de back-end cât și pentru ALM), Xamarin reprezintă o variantă extrem de atractivă pentru dezvoltatorii de aplicații iOS, Android și Windows care preferă varianta utilizării unei singure baze de cod pentru compilarea de aplicații mobile native pe aceste platforme.
În esență, Xamarin este o tehnologie open source care permite compilarea unei baze de cod C# comune în aplicații native iOS, Android sau Windows. Avantajele utilizării aceluiași mediu de dezvoltare (IDE - Integrated Development Environment), aceluiași limbaj de programare (C#) și aceluiași set de API-uri (Application Programming Interfaces) pentru toate platformele, atrag un număr din ce în ce mai mare de dezvoltatori. Prin metodele de interfațare cu sistemele de operare native pe care le asigură, Xamarin permite dezvoltatorilor să obțină cu C# practic aceleași rezultate pe care le-ar obține separat cu Objective-C, Swift sau Java. Ceea ce este important de subliniat în acest context este caracterul nativ al aplicațiilor rezultate, un element important de diferențiere al Xamarin față de alte tehnologii multiplatformă (cum ar fi de exemplu cele bazate pe HTML5 și JavaScript). Diagrama de mai jos prezintă grafic această abordare:
Caracterul nativ al aplicațiilor mobile obținute cu Xamarin este definit de trei elemente importante:
Interfețe utilizator native;
Acces nativ la API-uri;
Interfețele utilizator ale aplicațiilor Xamarin sunt construite cu controale native, standard pentru fiecare platformă. Dincolo de faptul că aplicațiile au un aspect familiar utilizatorilor fiecărei platforme mobile în parte, ele se și comportă în moduri cu care respectivii utilizatori sunt obișnuiți. Din punctul de vedere al accesului la API-urile expuse de sistemele de operare mobile, aplicațiile Xamarin au acces la toată gama disponibilă, fără restricții. Acest aspect este foarte important mai ales în cazul aplicațiilor care au nevoie de accesarea unor funcționalități specifice unei anumite platforme (cum ar fi de exemplu fragmente în Android sau iBeacon-uri în iOS/Android). Procesul de compilare al codului C# generează cod nativ pentru fiecare platformă, element ce asigură un nivel de performanță care pur și simplu nu poate fi obținut cu soluții ce interpretează cod la momentul execuției. Relevantă în acest sens este și capacitatea aplicațiilor native rezultate de a beneficia de tehnicile de accelerare hardware specifice fiecărei platforme.
Utilizarea de către Xamarin a limbajului C# pentru dezvoltarea codului sursă care stă la baza aplicațiilor mobile rezultate aduce câteva avantaje destul de importante. Posibilitatea de utilizare a Visual Studio ca IDE pentru procesul de dezvoltare este probabil unul dintre cele mai mari câștiguri pentru dezvoltatorii care folosesc Xamarin. Acest lucru este cu atât mai valoros cu cât asigură premisele necesare unei integrări facile într-un proces de ALM complet. În plus, nu sunt deloc de neglijat avantajele intrinseci ale limbajului C#, dintre care menționăm:
Tipizarea puternică bazată pe inferență de tipuri ce are drept efect obținerea unui rezultat mai consistent cu un efort mai redus precum și eliminarea nevoii de utilizare extensivă a adnotărilor explicite de cod;
Suport integrat în limbaj pentru apeluri asincrone (o abordare mult simplificată față de cele din Objective-C, Swift sau Java, care necesită utilizarea explicită de callback-uri);
Așa cum menționat la începutul acestui articol, tehnologia multiplatformă (oricare ar fi ea în general și Xamarin în particular) reprezintă doar una dintre cele trei componente necesare pentru dezvoltarea cu succes de aplicații mobile multiplatformă. Orice aplicație mobilă ce atinge un minim de complexitate are nevoie de un set de servicii de back-end care să îi asigure suportul pentru funcționalitățile oferite utilizatorilor. În general, vom regăsi cel puțin una (de regulă mai multe sau chiar toate) dintre categoriile următoare:
Managementul identității (conturi de utilizator și informațiile aferente);
Management de date (structurate, semi-structurate sau relaționale), inclusiv suport pentru funcționare offline, fără conexiune activă la internet;
Conținut (grafic, audio, video);
Notificări de tip push;
Pe lângă aceste aspecte, regăsim la nivelul back-end-urilor de aplicații mobile cerințe stringente în domenii cum ar fi:
Securitate;
Disponibilitate (capacitatea de funcționare neîntreruptă);
Scalabilitate (capacitatea de a deservi un număr arbitrar de mare de utilizatori ai aplicației mobile);
Platforma de cloud computing Microsoft Azure are capacitatea să asigure suportul necesar atât pentru cerințele de tip funcțional (cele din prima categorie menționată mai sus) cât și pentru cele de tip non-funcțional sau operațional (cele din a doua categorie menționată mai sus). Fie că este vorba de Azure Active Directory (pentru gestiunea identității) de Azure App Services (pentru găzduirea serviciilor), de Azure Mobile Services (pentru funcționalități specifice cum ar fi push notifications) sau de Azure SQL Database (pentru stocarea de date), Microsoft Azure pune la dispoziția dezvoltatorilor o gamă extrem de variată de servicii pe care aceștia le pot utiliza în construirea de back-end-uri performante pentru aplicațiile lor mobile. În plus, cerințe cum ar fi securitate, disponibilitate, scalabilitate și elasticitate sunt aspecte native în cazul unei platforme de cloud computing cum este Microsoft Azure.
Dezvoltarea eficientă a celor două componente majore (aplicația client și serviciul de back-end) necesită o abordare completă și consistentă de ALM (Application Lifecycle Management) care să asigure integrarea etapelor fundamentale (dezvoltare de cod, testare, release și operare), suportul necesar pentru toate aspectele legate de colaborare și comunicare în cadrul echipei și nu în ultimul rând, posibilitatea de urmărire a evoluției de ansamblu a întregului proces. În cazul aplicațiilor mobile, implementarea unui proces eficient de ALM prezintă câteva provocări specifice, cum ar fi spre exemplu cerințe de build cu specific de platformă (nevoia conexiunii cu o instanță de Mac OS pentru aplicații iOS) sau dificultățile unei testări eficiente dată fiind varietatea din ce în ce mai mare de versiuni de sisteme de operare și formate fizice de dispozitive mobile.
Xamarin și Microsoft Azure oferă un set de servicii care asigură suport pentru adresarea acestor aspecte, cum ar fi:
Visual Studio Team Services - servicii de ALM de bază, gestiunea codului sursă, integrare continuă, compilare multiplatformă precum și urmărirea procesului de dezvoltare și operare;
Infrastructură completă pentru dezvoltare și operare (mașini virtuale, container-e de servicii, securizare, telemetrie, etc...);
Xamarin Test Cloud - suport pentru automatizarea testării de aplicații mobile pe un număr de peste 2000 de dispozitive fizice reale;
În mod practic, Xamarin și Microsoft Azure oferă un set complet de tehnologii și servicii pe care dezvoltatorii de aplicații mobile multiplatformă le pot utiliza în vederea eficientizării proceselor de dezvoltare, publicare și operare a soluțiilor pe care le oferă. Diminuarea semnificativă a efortului de prezență simultană pe mai multe platforme și disponibilitatea unor funcționalități care permit asamblarea rapidă și eficientă de servicii de back-end permit furnizorilor de aplicații mobile să se concentreze mult mai mult pe creșterea gradului de satisfacție al utilizatorilor finali cu consecințe directe și semnificative în succesul lor pe piață.
Ciprian Jichici este General Manager al Genisoft, Microsoft Regional Director pentru România și Microsoft Most Valuable Profesional pentru Microsoft Azure. Împreună cu echipa de aplicații mobile de la Genisoft, Ciprian a fost unul dintre pionierii platformei Xamarin în România, dezvoltând unele dintre primele aplicații mobile comerciale din țară bazate pe această platformă.
de Iulia Bicu
de Vlad Vesa