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?

You didn't say what kind of applications you're developing and who your target audience is. For example, if you have a typical US based corporate audience, they may still be using IE6/7/8 and Windows XP (ouch!) and HTML5/CSS3 solutions won't work for them.
–
jfrankcarrAug 7 '12 at 11:19

Thanks for the feedback! I'll edit the question in a moment.
–
MartijnAug 7 '12 at 11:24

3 Answers
3

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.

just as a note: WCF does REST too these days, and can expose its data through lean json, rather than bloated XML
–
MartijnAug 7 '12 at 11:11

It takes some planning to get HTML5/CSS3 solutions to work well across phones, tablets and desktops. I've seen more than a few fails at this. You need to test on both IOS and Android phones and tablets as well as all the common desktop browsers. Also, you have to deal with, "We don't have the budget for an iPad and a Galaxy Tab, just wing it."
–
jfrankcarrAug 7 '12 at 11:24

I'm quite easy when it comes to that: no testing device means no tested (en hence, no guarantees from my side) application for those devices. Want to claim it works on a specific platform? Hand me the testing tools. Don't want to provide them? Then I won't claim it works on that platform.
–
MartijnAug 7 '12 at 12:31

@jfrankcarr - it takes some planning just to get it to work across browsers on Windows desktops too (thanks, IE). When using HTML5, do not think of it as a single GUI, more like 1 GUI for each platform where most of the code is reused.
–
gbjbaanbAug 8 '12 at 13:14

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.

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.