The tremendous success and spectacular adoption rates of modern mobile platforms are tightly connected with the number and quality of the mobile apps that run on these platforms. Given the tough, competitive context of the app stores, time to market and flexibility are some of the demanding selection criteria in today's mobile developers' world. As a direct consequence of this, we are witnessing a spectacular rise and development of technologies that enable the development of quasi-simultaneous versions of a mobile app on multiple platforms using the same code base (also known as cross-platform technologies).
In addition to such a cross-platform technology, the fundamentals of efficient mobile app development are provided by two other fundamental ingredients: a platform for backend services (the ones that actually service the mobile application client) and a comprehensive development process (also known as Application Lifecycle Development or ALM). Xamarin is one of the cross-platform technologies that proved to be very successful in the past years. Combined with Microsoft Azure (offering support for both backend services and ALM), Xamarin is a highly attractive choice for those iOS, Android or Windows developers that prefer using a single code base to compile native apps on these platforms.
The native character of the mobile apps compiled with Xamarin is underlined by three important aspects:
Native user interfaces;
Native access to APIs;
The user interfaces of Xamarin apps are built using native, standard controls for each platform. In addition to providing a familiar aspect to the users of each mobile platform, they also behave in ways the users are accustomed to. Regarding the access to the APIs exposed by the mobile operating systems, the entire range of these APIs is available to Xamarin apps, without restrictions. This is especially important in the case of apps that need to use platform-specific functionalities (like Android fragments or iOS/Android iBeacons for example). The C# code compilation process generates the native code for each platform, providing a level of performance that cannot be achieved with approaches that are based on runtime code interpretation. One of the most relevant capabilities in this context is the ability to use platform-specific hardware acceleration functions.
Using C# as the Xamarin choice for source code development also provides a set of important advantages. Using Visual Studio as an IDE for the development process is probably on the most important (and valuable) gains for Xamarin developers. This is especially important as it facilitates easy integration with a comprehensive ALM process. In addition to this, there are several other C# intrinsic advantages like:
Strong typing based on type inference, enabling developers to reach the same result with less effort and without the need to use extensive code annotations;
Language-integrated async support (a much simpler approach than the ones used in Objective-C, Swift, or Java, where explicit callbacks are required);
As stated at the beginning of the article, a cross-platform technology (whichever it is in general, and Xamarin in particular) is just one of the three components that are necessary for the successful development of cross-platform mobile apps. Any mobile app that reaches a minimum level of complexity needs a set of backend services that provide support for the functionalities it provides to its users. Typically, we will find at least one (usually more or all) of the following categories:
Identity management (user accounts and the associated information);
Data management (structured, semi-structured, or relational), including support for offline execution, without an active internet connection;
Content (graphics, audio, video);
In addition to these functionalities, one typically finds stringent requirements in areas like:
Availability (the capacity of running without interruptions);
Scalability (the capacity of servicing and arbitrarily large number of mobile app users);
The Microsoft Azure cloud computing platform has the capacity of providing support for both the functional requirements (the ones in the first category mentioned above) and the non-functional requirements (the ones in the second category mentioned above). Whether we speak about Azure Active Directory (for identity management), Azure App Services (for services hosting), Azure Mobile Services (for specific functions like push notifications), or Azure SQL Database (for data management), Microsoft Azure is providing developers with a large range of services they can use to build high-performance backend services for their mobile apps. Requirements like security, availability, scalability, and elasticity are simply natively implemented by a cloud computing platform like Microsoft Azure.
An efficient development process for the two major components (client app and backend service) requires a comprehensive ALM (Application Lifecycle Management) approach that enables the integration of all fundamental stages (code development, testing, release, and operations), the support needed for all aspects related to team collaboration and communication, and last but not least, the capability of monitoring the progress of the entire process. In the case of mobile apps, implementing an efficient ALM process poses some unique challenges like platform-specific build requirements (the mandatory Mac OS connection in the case of iOS apps). The difficulties in the testing process are linked to the ever increasing number of operating systems versions and physical device formats, for example.
Xamarin and Microsoft Azure provide a set of services that enable these scenarios:
Visual Studio Team Services - basic ALM services, source code repository, continuous integration, cross-platform compilation, and development and operations processes monitoring;
Complete infrastructure for development and operations (virtual machines, service containers, security, telemetry, and the like);
Xamarin Test Cloud - support for automated mobile apps testing using over 2000 physical devices;
With a very practical approach, Xamarin and Microsoft Azure provide a complete set of technologies and services that cross-platform mobile app developers can use to make their development, release, and operations processes more efficient. With a significant decrease in the effort of being simultaneously present on multiple platforms and with the availability of functionalities enabling the rapid assembly of backend services, mobile app providers are free to focus on increasing the satisfaction level of their final users, with direct and significant consequences on their success.
Ciprian Jichici is General Manager at Genisoft, Microsoft Regional Director for Romania, and Microsoft Most Valuable Professional for Microsoft Azure. Together with his mobile apps team at Genisoft, Ciprian pioneered commercial mobile apps development using Xamarin in Romania. Ciprian can be reached via e-mail at ciprian.jichici\@genisoft.eu.
by Iulia Bicu
by Vlad Vesa