TSM - Developing cross-platform mobile applications with Xamarin and Microsoft Azure

Ciprian Jichici - General Manager @ Genisoft

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.

Basically, Xamarin is an open source technology that enables developers to compile a single C# code base into native iOS, Android or Windows apps. The advantages of using the same development environment (IDE - Integrated Development Environment), the same programming language (C#), and the same set of API (Application Programming Interfaces) for all platforms attract ever larger numbers of developers. Based on the native operating system interfaces it provides, Xamarin enables developers to achieve the same results using C# as they would have using Objective-C, Swift, or Java separately. It is worth mentioning here that the resulting apps are native, which is a significant differentiating aspect of Xamarin as opposed to other cross-platform technologies (like the ones based on HTML5 and JavaScript for example). The following diagram best illustrates this approach:

The native character of the mobile apps compiled with Xamarin is underlined by three important aspects:

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:

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:

In addition to these functionalities, one typically finds stringent requirements in areas like:

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:

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.