Before choosing C # as the development language for developing Android, iOS and Windows Phone apps an organization would have to be sure as to what its development strategy is going to be.
- Are they planning to develop mobile business applications for customers and act as vendors?
- Are they planning to enable their existing applications on mobile platforms?
- Are they planning to help their existing customer develop mobile applications for their existing business applications that the company already supports?
- What is their current technology stack being adopted by the company?
- Are they planning to reuse existing code?
- Is it a requirement to migrate a subset of the business functionality to the mobile platform?
With respect to the above mentioned questions the five most important points to be kept in mind while choosing a .Net language such as C # for mobile development are listed below.
Reusability: This is the first factor that comes to mind. Is there any possibility of reusing code written in the past or is there a vision to reuse the code written in the present for the future. If organization is a pure .Net shop and they want to be able to reuse their existing business functionality without having to fuss about rewriting the code using java or objective C then they can simply reuse the existing .Net dll's. These dll's will run fine against the mono VM and all they need to do is develop the UI for applications using mono for android or monotouch for iOS. This provides organization with a huge incentive especially if they wish to reuse their existing business functionality. One would always contend that the same could be achieved by developing native applications that call the business services (exposed via REST based web-services).
While this approach is also viable and is a well known approach in many cases most of the design enthusiasts would argue that it is better to have the business logic execute as close as possible to the native mobile OS. Hence we are able to reuse the existing business dll's and just focus on creating the UI for native applications. This is a very key area which organizations need to examine especially if the aim is to reuse the same .Net business logic across multiple mobile platforms.
Migration: This is the second factor we need to consider while deciding on the development technology. Many key mobile applications are usually a subset of a larger business application. This is true in cases of most banking mobile applications, social n / w applications, professional n / w application and LOB applications. So in these cases the mobile application is usually a subset of the actual applications functionality. What it means is that the mobile application screens will contain a lesser amount of controls and capture lesser amount of data and perform only the most necessary functions. In such cases migrating an existing .Net application to the android and iOS platform save a lot more effort in getting a mobile version of the business application up and running on the store. Migrating an existing application can be more fruitful and yields rich benefits whilst saving a lot of time in not having to rewrite or re-architect an application in a different language such as java or objective C especially when you have the right set of tools and methodologies in place to carry out the same.
Portability: The third key factor we need to consider is whether we would like to create an application that would run on multiple platforms. If we want to multi-target multiple platforms such as iOS, Android and Windows Phone OS then using the mono platform (with C # as dev language) does seem like a good choice and may reap huge benefits. The mono for android and monotouch frameworks lets us develop .Net code which can be reused on multiple platforms. We can use the same multi-targeting approach that was used to build common applications that run on both WPF as well Silverlight engines. We have this advantage when we write a mobile application using mono framework. We can write code once and actually target multiple platforms. The most distinguishing factor of these platforms is their UI architecture, with Android apps having .axml files and iOS platform having its own MVC architecture. If we architect our code smartly we can easily isolate the business logic and utilities section of the code and keep them in separate dll's that will be able to be used on any of the above mentioned platforms. The respective UI architecture can be generated rapidly using tools or a systematic methodology. In this way we have a single mobile app with a single codebase that is maintained in a single language (C #) and can be ported to multiple platforms.
Adaptability: The fourth factor is the adaptability of the development language. With .Net and C # coupled with the Xamarin suite you get a wide variety of options. One can write C # code that can be reused on iOS, Android and Windows Phone devices. Also we are quite aware that with ASP .Net MVC coupled with HTML5 and JQuery we can easily develop mobile apps with look and feel of native apps and with mobile frameworks such as PhoneGAP and JQuery mobile we can easily construct hybrid applications. Hence the .Net framework and C # language provide a very high degree of adaptability as a cross platform development language when coupled along with the Xamarin suite.
Return on Investments – ROI is one very important factor that is considered while developing mobile application. Few factors that we need to consider while calculating ROI
· Project Cost – What is the initial cost that is required to develop the mobile application?
· Benefits from the project – Benefits depends on the type of the application. If it is revenue generating application, benefits will be direct. If it's a consumer service app, benefits will be indirect
· Reach of mobile app – If it's a web application, reach will be higher but if it's a native app, reach will be limited to the users of the targeted mobile platform
With Mono framework, you can clearly see benefits considering the above points. Project cost will be well under the limits as only the Mono licenses we need to consider. We do not need any other specific investments. .Net skilled resources are easier to find and are not very expensive. With Mono Framework, all the platforms can be reached which will ensure that more mobile users can be reached with per dollar invested on the project. With a lower project cost and higher reach, even the indirect benefits looks better and ROI is much better.
Its very important to keep the above points in mind while choosing C # coupled with the Xamarin suite to develop mobile applications.