.NET, Xamarin, and mobile software development

A BLOG BY DAN HERMES

.NET Shops are in a Mobile Pickle

29 June 2013No Comment

When it comes to native mobile development, .NET shops are in a pickle. Mobile and tablet use is estimated to make up 90% of new device adoption by 2015 (Gartner). Steve Jobs saw this coming and had this to say:

“When we were an agrarian nation, all cars were trucks, because that’s what you needed on the farm, but as vehicles started to be used in the urban centers, cars got more popular. Innovations like automatic transmission and power steering and things that you didn’t care about in a truck as much started to become paramount in cars. … PCs are going to be like trucks. They’re still going to be around, they’re still going to have a lot of value, but they’re going to be used by one out of X people.”

This statement, made at the D8 conference in 2010, was prescient for consumer users of computing machines. (The jury is still out for business users – they still need PCs with standalone screens and keyboards.)

For Microsoft .NET development, this trend has proven complicated. Microsoft’s goal is to capture market share in both mobile software and hardware platforms. That means Windows tablets and mobile phones trying to beat out iPhone and Android. With Google in the lead for number of users, Apple in close second, and Windows phones and tablets coming up far in the rear with less than 5% of the market, this is hard to imagine today. Developers and stakeholders just haven’t bought into it yet. That’s because the apps are developed where the eyes are, which means Android and iPhone for now.

According to International Data Corporation, in 2016, the platform breakdown will be as follows:

68.8% – Android

19.1% – iOS

11.4% – Windows Phone

4.1% – BlackBerry OS

1.6% – Other

According to International Data Corporation, in 2016, the platform breakdown will be as follows:

• Android = 68.8%

• iOS =19.1%

• Windows Phone = 11.4%

• BlackBerry OS = 4.1%

• Other = 1.6%

This is a becoming a huge problem for .NET shops who are ready to enter the world of mobile development. Microsoft’s conflict of interest has left them behind in providing a cross-platform development solution. We need to build mobile apps in C# that will work on iOS, Android, and Windows devices! It’s a lot like the browser wars of the nineties when all we wanted were web apps that worked but all we got was competition, errors, and plug-ins that only worked in their native browsers. So here are the popular solutions available right now to build cross-platform native mobile apps:

.NET

Xamarin – http://xamarin.com/From the ashes of Mono rises Xamarin. Develop in Visual Studio using C# to create Android, iPhone, and Windows phone apps. Xamarin’s track record is good, the driving force behind Mono and MonoCross, though their efforts are still relatively untested.

non-.NET

PhoneGap – http://phonegap.com/ – I have heard of some successful projects using this open source framework which wraps HTML5 web apps in native apps(creating hybrid mobile apps), but the samples on their website are slow, broken, or missing. Not encouraging.Appcelerator Titanium – http://www.appcelerator.com/

As you can see, the native mobile development options are very limited for .NET. Beyond building web apps for use on mobile browsers, nothing in Visual Studio 2012 or 2013 addresses the cross-platform problem. It’s as if Microsoft fully expects C# developers to develop only for Windows devices, which is not practical in the forseeable market. Therefore, mobile development , a risky proposition on any platform, is doubly risky from the standpoint of .NET.

If you build mobile apps against existing .NET code bases, I suggest decoupling from data sources using RESTful Web API services so newer apps can use older services. Learn something about Android and iOS development so your approach is informed. Try building a mobile web app in HTML5, ASP.NET, or MVC , which will work in all mobile and tablet browsers. Native device functions may be unavailable and it will look and work like an HTML app, not like a native mobile app.

For .NET enterprise mobile development, build simple, effective apps that you expect to be disposable in the short run until this blows over.