With iOS and Android soaring on mobile devices that become ever more pervasive, every other year being the ‘year of Linux on the desktop’ – which is somewhat snarky, but they are getting there -, OSX still holding its own, the time when one could simply say “it runs on Windows, and if you’re not using Windows, well, sucks to be you”.
I’m a .NET developer, with the applications i’m developing being fairly service-oriented, so that I can easily expose the backend logic to different frontends cross platform. I’m really bad at user interfaces, but in the end, applications do need to end up with an end user. And to present the application to the end user, it needs a GUI. It was looking like XAML/WPF was the land of bounty, where they weren’t quite there yet, but were aiming to make a cross platform presentation layer. Lately, it has been mighty quiet on the WPF front though. Silverlight is all but dead. I sort of half hope that the ‘right thing’ will be happening here, with some black magic, pixiedust and flying unicorns that poop rainbows transforming my code + XAML into HTML5/CSS3 applications, winforms, metro, or whatever other form I choose to build for. This might be a bit optimistic.
So what presentation forms should I be looking in to? I would like to continue to use .NET as a primary ecosystem. Should I just be going asp.net + html5, and do the front end by hand in html5/js/css? Is there any framework that looks like it will hold the promise to be able to do something in a somewhat unified language?
2
Go for HTML5 based development, not only will it work on mobiles but will be cross platform on desktops too.
to get cross-platform mobile web dev, you want Apache Cordova, not just a way to write apps using web GUIs, but also gives you access to various mobile APIs, nicely wrapped up in javascript library. For LoB apps, HTML is the perfect solution as you don’t need tons of power to run them. For accessing your back-end services (being very careful about WCF services as their SOAP protocols tend to be poorly interoperable) then use jQuery direct or grab restify”s client libraries (or hey, forget obsolete old .NET and run Node.js servers instead, then you get to do everything in that unified language, except for CPU-crunching parts that you’ll want to write in C++)
Of course, if you want to write something with lots of GUI performance, you’ll want to go native with C++, either with the NDK or with an objective-c wrapper.
4
I think it really depends on what kind of software you are writing.
Is it something you can leverage by using the mobile device native API’s (like multitouch, rotation, compass, etc…) or it doesn’t matter ?
Do your application need to be online to work or it should work offline ?
Today you have some great HTML/CSS/JS tools to work with and, as the browser became the ubiquotous user interface, and with the progression of Atwood’s Law, you can create nice interfaces with relatively easy.
Take a look on jQuery, jQuery UI, KnockOut JS and many others like flot you can use to create both online or offline applications with.
For some mobile devices, like iPhone or Android phones you can create simple applications where you can load a remote or local URL using the native browser.
If your application will only work online, stick with the technology you know, but learn some god dammit javascript, since it’s the assembly language for the web.
PS: On a side note, Scott Hanselman has a great list of cool javascript libraries.
Use Html5/CSS3 as native mobile/web development. This will allow you to get same result on mobile as well as desktop devices.
As a .NET developer you might be familiar with ASP.NET framework development, thus i would suggest to use ASP.NET MVC 4 for cross-platform mobile development with views/pages in HTML5/CSS3. There are good number of tools and mobile frameworks that are a part this development community.
You may look for more details @ What’s New for Mobile Development in ASP.NET MVC 4.
There is also possibility to use Silverlight, but i did not explore it yet. Here is a refernce to look – Silverlight for mobile phones