OK. It's a bit after Genesis (take a couple thousand years or so), but after the announcement today at the MIX keynote I am frankly blown away. And, at the risk of sounding like a cynical veteran who has seen some not so interesting stuff come out of these keynotes, this is the first time, at a developer conference that I have been this excited about an announcement. Scott Guthrie, Product Manager of ASP.NET, IIS, Visual Studio, Silverlight and all things cool dropped "da bomb" on the audience Monday many of who I still think haven't fully processed what this means. What? What? You say. Tell me! Tell me!
OK, but first some background. So, Windows Presentation Foundation, as we all know (unless you've been living under a rock and talking to rolly pollys) is an integrated toolset for delivering the next generation of rich user experience to the Windows platform. It dramatically redefines the smart/winforms client usability and design element by significantly raising the bar on aesthetics- that critical missing element in Windows apps up through Windows 98 (and arguably Winodws XP) that Apple understood a long time ago and for which we (the collective we), Microsoft have finally seen the light (pun intended).
A couple of years ago, with the release of .NET 2.0 and ClickOnce Deployment, some industry experts whom I admire (and are much smarter than me) asserted that ClickOnce signaled the return of the Smart Client. This term gets used loosely, but I think the maintsream understanding is that of a Windows Forms application that is deployed to a centralized IIS server for ubiquitous consumption by a corporate intranet in much the same way a line of business application might be traditionally "installed" sans the management pain (even GPO and MSI can get hairy). I think in reality, there is a fair combination of this deployment model (which can very well serve up a traditional thick client app) along with .NET Windows Forms applications installed via traditional means that are simply a UI (keeping the footprint small) that consume remote services and applications via Web services and/or WCF endpoints. This model epitomizes the Software and a Service paradigm. Up to this point, there is much consensus that for a true rich user experience Smart Client apps are the best option and that again, by taking care of the distribution problem, Smart Client applications would start to replace those LOB ASP.NET applications that really have no business being on the browser (users hate web applications) to begin with.
Well, the experts were right, sorta. Yes, ClickOnce provides a solution for managing WinForms/Smart Cient apps from a centralized publishing repository that is secure and accessed interactively from a web server. In this model, the rationale is that unless you are really targetting internet applications (online stores, portals, etc), there is no longer a single reason to develop a LOB application as a browser app (ASP.NET, AJAX, postbacks, inferior user experience) period. This is especially true since the advent of the RIA (rich internet applications) movement in which developers have been mired in even more of a productivity black hole to create the effects that users crave if not demand that again, is "just there" in .NET Windows Forms. Needless to say, the reasons for choosing Windows Forms over Web Forms (ASP.NET) for your LOB application are many; includiing free client-side state management, improved productivity (read drag and drop, no JavaScript, AJAX or markup mess) and now, a unified, streamlined deployment model.
Have IT managers and infrastructure engineers really responsed to this compelling argument? Not really. Many I believe are still mired by the complexity of traditional thick client and client-server management and scalability nightmares and have become all but complacent about building truly exceptional LOB applications, settiling for inferior browser-based (read ASP.NET) offerings instead. Socialized software? Maybe.
Well, it has been a long time since I've been this excited about an announcement of a web related technology...
What if you could create high impact, rich internet applications (RIAs) using WPF/E (Silverlight) and use .NET languages (any .NET language) for your XAML code-behind in the browser? No, no, no. You missed it. Go back and read it again.
Back? I said "in the browser". That's right. .NET CLR will ship for the browser with Silverlight 1.1 plug-in as part of the Silverlight 1.1 release.
Pause for dramatic effect... Another pause....
Silverlight, formerly WPF/E (or Windows Presentaion Foundation Everywhere), the version of WPF targetted for browser apps that installs as an on-demand plug in will ship in two versions. Version 1.0 (now in beta with a GO Live! license) is WPF/E with a snazzy new brand. Version 1.1, however, currently in Alpha will ship with the .NET Framework (albeit a smaller version of it) bootstrapped right in the plug-in. Not only IE, either. Firefox? Opera? yup. Will my RIAs run on a MAC? Yes, and boy didn't the presenters enjoy showing that off at Mix!
What does all this mean? Well, I debated on the title of this post for a while and almost had decided on "Silverlight: ASP.NET is Dead", but decided on a less morbid theme, because this is very positive and very, very big news for web developers. In short, Monday, April 30th will go down as a watershed moment in web development. The game just changed. We have a new paradigm shift before us, not only in what the true meaning of a thin client is, but in raising the bar in UI experience that does not descriminate between Windows Forms and the browser when it comes to providing SAAS (Software and a Service as opposed to Software as a Service). Rich internet experience in a fully managed runtime. Free state management. No more JavaScript. No more AJAX. Just .NET CTS code (have I mentioned this already)?
Does this mean that we can just put all of our UI, XAML, business components and data access components and run them in the browswer? NO. The idea is to keep the footprint as small as possible. As a matter of fact, the FCL that ships will be kept to an absolute minimum (more on that in a later post), similar conceptually to what you get with the .NET Compact Framework. But it does mean that you can build simple (buttons, textboxes, grids, etc) or incredibly rich user interfaces with XAML that provide animation, media streaming and user input and call out to ASMX or WCF services out in the cloud to do the heavy lifting. This is the essence and beauty of SAAS epitomized.
In the future, I see ASP.NET as being a mere host for the download as well as for hosting some applications that may just not lend themseleves to Silverlight (any combinations thereof). If the bar has been raised, and the industry responds to the demands that technologies like WPF should illicit then this isn't really a long-term technology anyway. No, ASP.NET won't be irrelevant tomorrow, because it will take a few years for Silverlight to mature and stabilize, however if the soundness of this technology proves out, then there will be no reason to write ASP.NET UIs anymore. Web services, yes. UIs no. I can hear it now "When I was a developer, we had to manage our own state, write JavaScript and this stop gap technology called AJAX had the entire industry in a tizzy for about 2 years).
In all seriousness, with this announcement, AJAX developers will be rightfully confused, and the great folks over at the Mono project are probably, well, crying. I know one thing for sure. I will successfuly have skipped the entire AJAX fever which, as I had predicted, was nothing more than a stop gap to get around the fact that writing JavaScript sucks, XML and JavaScript XMLHTTP is hard, the performance is sub-optimal, and hand-written JavaScript is a productivity black hole (not to mention so 1995).
So, the experts had the right idea, I just don't think they ever saw this coming. I know I didn't.