This week we’ve been discussing standings and potential of several client-side technologies in context of various application types. We were working on some kind of a recommendation for a client who’s in a need of refreshing their multi-channel application architecture. I went through several talks with client people, my team, Avanade experts and finally Microsoft evangelists as well. Conclusions are not that clear, but very interesting - that’s for sure. I’m going to bring you some kind of summary, of course while limiting myself to Microsoft tech stack only.
Current situation
Palette of choice consists of:
- ASP.NET 4.0 - most classical approach, strong with server side controls, compatible with classical paradigm of rendering dynamic content aided with event-hooked procedures. Based on ancient ASP, still most popular between web developers working with Microsoft tools. Quite hard to adapt, if you’re coming straight from WinForms / WPF world.
- ASP.NET MVC 3 (4 is in Beta stage) - ASP.NET “reloaded” - Microsoft learned their lesson and proposed an approach stripped of some major ASP.NET drawbacks - MVC is well structured (separation of concerns), fits well into testing paradigm, is “lighter” (lack of server controls). On the other hand, if you want your web development to look good (Web 2.0 style), you need to either master JavaScript or use some library that embeds it (jQuery, ExtJS, Knockout, etc.)
- WPF 4.0 in a browser - just a WPF application in a web. Heavy, great possibilities but it requires strong hardware “under the hood” as it utilizes hardware acceleration.
- Silverlight 5 - relatively new option, embedded plugin-based technology that is a subset of what WPF offers. Interfaces built with Silverlight can be really eye-candy (if they are designed by a skilled designer) and feeling is great as all the communication is asynchronous by design. Unfortunately, just like WPF - Silverlight is supported only by Microsoft. You can’t run WPF / SL websites on iOS / Android. Linux has its Moonlight, but it’s quite delayed when compared to latest SL release. It’s not as heavy as WPF.
Frankly speaking - choice is quite clear:
- If you need to build a dashboard-style intranet LoB application and you can force Microsoft Windows as a required platform in the organization - Silverlight is a way to go. It looks great, it’s similar to WPF, it allows you to perform presentation layer design separately from business logic design. And there’s a very convenient tool for true designers (not programmers) - Expression Blend.
- In all other scenarios - you should aim for ASP.NET / ASP.NET MVC. I personally recommend the latter option, but if you have developers already skilled in ASP.NET, you’d do well with ASP.NET itself as well.
What will happen in next 1-2 years?
Last few months brought quite a revolution. What happened? BUILD happened (http://www.buildwindows.com/). It was a conference, held by Microsoft in September, that revealed new roadmap Microsoft decided to follow in next few years. I’ll be brief:
- Windows 8 with its Metro and WinRT
- No official statement on Silverlight’s future
- Announcing big support for HTML5
If you’re looking for detailed info, you’ll have to Google it on your own - the short summary is:
What can we do / should we do?
Not much can be done, to be honest. We have to look at WinRT carefully as it has great potential, but case of Windows Phone 7 has already proved that even if Microsoft brings great technology, immediate success is not guaranteed. One thing we should get prepared to for sure is HTML5 as it seems to be a clear next step in web-based development. Even if standard is not finalized yet, we can’t ignore it for now. Fortunately, using ASP.NET or ASP.NET MVC means a smooth transition to HTML5 world without pretty much any rework.
I won’t risk any statement. No success is guaranteed and we can’t be sure if Windows 8 will make a success or not. But whatever will be the leading client-side technology in 2014, we have to be there, able to adapt it immediately, because world is not going to wait for us.