Ajax vs. Silverlight and .NET

My thoughts on questions along the lines of Ajax vs. Silverlight, and independent of the debate, how .NET spans the gamut of application development platforms...

I get the Silverlight vs. Ajax question all the time, whether it is at a conference, over email, or over on discussion forums. In the interest of seeding a broader discussion, and hearing what other people think, I thought this would be an interesting blog post, along with the side benefit of having a ready-made answer the next time the topic comes up.

There have been a number of blog posts pitching Ajax vs. RIA (whether its Flash or Silverlight) such as this one here. Personally, I think Ajax and Silverlight complement each other, and the "vs." is a bit misplaced. Furthermore, the way I see it, there is a continuum, with a number of sweet spots representing specific classes of applications. This perspective is perhaps directly reflected in the makeup of the UIFX team that I work on at Microsoft - the team is spread across ASP.NET, Ajax, Silverlight and RIA frameworks all at once actively working on cool stuff in each of these areas (i.e. lots to look forward to).


User-facing Application Spectrum

Reach and Rich
The diagram represents a spectrum of application development approaches and technologies/platforms with increasing reach on one end, and increasing capabilities on the other. Applications have distinct scenarios and correspondingly gravitate toward a sweet spot. Some apps lie squarely on the left, with the need to first and foremost prioritize universal reach. At the same time, some apps have experience or functionality as the high order bit, where it is necessary to leverage a more capable platform, even if it means somewhat reduced reach. Still, the best apps will probably be those that leverage multiple front-end options to follow the user, with a common back-end (sort of a software and a service model).

One thing is sure - users are expecting more, and apps are trying to differentiate by meeting them. For example, the Ajax hype has given way to broad mainstream and pragmatic use of the technology (hence I call the older style of Web apps as "Classic" in the diagram).

RIA Islands
At the same time, the reality is a number of applications are no longer "pure" Ajax, i.e. just HTML and Script-based. Ajax applications are increasingly relying on plugins such as Silverlight, Google Gears, and Flash to incrementally enrich the experience they can offer (ideally, in a manner such that they gracefully degrade). These plugins let Ajax applications do interesting things like use local storage, access user's files, integrate rich media and vector graphics, background processing etc. Just like ASP.NET server controls make it quite easy to incorporate Ajax functionality, they are also nicely positioned to simplify the "Islands of Silverlight" scenario. Imagine a data-bound server control that renders a Silverlight chart, and degrades to a static image dynamically rendered on the server without requiring the app developer to learn several new technologies. I've spoken on this at recent conferences, and will be blogging more on this end. Wilco blogged about Silverlight Interop to cover the use of Silverlight to implement HTML code-behind and creating a better file uploader for Ajax apps.

Trends
The second thing that is also interesting about the diagram are the trends in effect. The reach platform, starting to be referred to as the Open Web by some, is bound to get richer in terms of the execution engine, the presentation stack, and its framework capabilities. HTML 5 promises to improve some core pieces of the browser-based platform, and all the browsers (yes, that includes IE) are already stepping up to improving the state of the art in their next versions. The interesting question is when we will see ubiquity around the next batch of incremental improvements like the ubiquity of XMLHTTP that fueled the Ajax wave a couple or so years ago. RIA technologies are becoming more ubiquitous, and starting to become a viable or required choice for development in the next generation of Web apps. Over time as what is considered "rich" today gets commoditized by the reach platform, the platforms on the right need to constantly redefine themselves by finding new ways and value offerings in order to differentiate, which always keeps them interesting and in the forefront. It's a constant tug-of-war ... and it doesn't seem like either Ajax or the RIA approach is going to all out win any time soon.

A .NET Theme
So if you agree, the world isn't Ajax vs. RIA, but is rather Ajax and RIA (and Desktop), and there is room for them to co-exist, the final thing I'll point out is how the Microsoft platform plays out in this space. Clearly, the consistent theme across the board is .NET and managed code, which allows developer skills, as well as in many cases, common code that can be shared and leveraged as apps transition or grow. Ray Ozzie spoke to this when referring to connected development at MIX 08. We have .NET on the server providing that common backend, .NET on Web/Ajax front with ASP.NET and even . NET-flavored scripting with technologies like Script#, and of course, .NET on the client with WPF. Silverlight 2 brings .NET to the RIA space. In fact, the simple introduction of managed code into the browser is perhaps one of the most eagerly anticipated feature.

The fun, and simultaneously challenging thing, is working on the multiple sweet spots along the current application platform spectrum, balancing the feature set, and making sure we have messaging for how they evolve, complement, and differentiate to address specific scenarios at the same time.


[ Tags: | | | ]
Posted on Tuesday, 4/8/2008 @ 9:03 AM | #Silverlight


Comments

28 comments have been posted.

Josh Coswell

Posted on 4/8/2008 @ 12:47 PM
Great insight blog.

Josh Coswell

Malcolm Sheppard

Posted on 4/8/2008 @ 1:40 PM
Great post. When I look at your continuum graphic, I also see overlaid on top a skill sets continuum where there are a ton of developers at each end and not nearly as many towards the center. The trick is how we migrate individuals towards the sweet spot you highlight.

Mike

Posted on 4/8/2008 @ 2:40 PM
Please be realistic, Microsoft is only interested in .NET, not in Ajax. Want proof? Look at the ASP.NET Ajax 3.5 release, it's pathetic compared to what Yahoo, Ext and many others are developing. Almost 1.5 years after the release and we're being told that drag and drop is a so called 'futures' thing? That's to be expected when Microsoft pulls developers off the ASP.NET project to work on Silverlight. Same goes for the Ajax Control Toolkit, it's on Codeplex (which is more like where software project go to get punished) and all it has to show is bugfixes for the last year.

I've given up on ASP.NET Ajax. And to hell with Silverlight, it's being forced down my throat every step it take, be it MSDN, or trying to download something from Microsoft. That's a nice way to build an install base no doubt. But after IE, VBA and WMP it's just a matter of time before they cancel all Silverlight for Mac OS X and where does that leave us? In the dust.

At least be honest and don't pretend like your manager would approve of a kick ass cross platform HTML + CSS + JavaScript framework, because that's just a threat to his yearly stock options (and yours). Your last paragraph is nothing but weasel words that perfectly illustrate this.

Ken Jones

Posted on 4/8/2008 @ 5:54 PM
Nice post. I can definitely put this to good use.

Mike,
Sorry you feel this way. Check out Telerik and DevExpress. Their demos offer a great example of what you can do with ASP.NET AJAX. Of coarse they have gone the extra mile or two.

Nikhil Kothari

Posted on 4/8/2008 @ 7:23 PM
Malcolm - interesting observation. You're right, that the middle of the spectrum is somewhat more bleeding edge than the ends, which have been around for longer. This is exactly where we're spending quite a bit of energy on the platform, application frameworks, and tools ends. A lot of the work we're doing on the RIA front is building the necessary pieces to make it approachable by mainstream developer audiences.

Mike - the real question not whether a kick ass cross platform HTML + CSS + JavaScript framework would be approved or not, because as the post hopefully conveys the question is not about Ajax vs. Silverlight. Each of them have interesting scenarios, and are optimized for certain kinds of app experiences or development experiences. There could be more stuff on the Ajax front, and for now, I'll say we do indeed have a roadmap thats got some super interesting stuff to look forward to, and that we will be publishing that hopefully soon. In fact, I demo'd just one small bit of it at MIX08 as part of hinting at the future in my Real World Ajax talk - specifically templating - that I will try to blog about as well, and that got an applause and resonated with the audience. And as Ken adds, we are definitely in the business of creating a platform that empowers the ecosystem to run further with it.

[update: I posted the post on templating. It is at http://www.nikhilk.net/Ajax-Templates.aspx.]

Steve

Posted on 4/8/2008 @ 8:36 PM
I just don't feel the tooling for Silverlight is anywhere near it needs to be to be useful. And don't bring in Blend. I can't see being productive writing xaml all day with no designer support & a serious lack of controls.

I think the foundation is there, but it will need some work to be usable for a developer to work with.

ie. I don't see a combobox for Silverlight, nor any masked input controls, etc... and a ton of RIA apps need good 'form' support. Validation controls, etc...

derk

Posted on 4/8/2008 @ 8:40 PM
Well Mike, the current situation is a lot like 15 years ago when Windows 3.0 came out. Ajax apps now are like DOS apps back then, and SilverLight 2 apps are like Windows 3 apps. You can pick whatever you like, but be VERY realistic please. It's plain to see which one is better when ego is not in the way of good judgment.

Miguel de Icaza

Posted on 4/8/2008 @ 8:44 PM
Nikhil,

In the last stage I believed you put Adobe AIR and WPF on the same bucket with all other desktop development platforms, and am not sure that this is correct.

There is a significant difference between WPF and AIR, the former is limited to Windows, while AIR runs additionally on the Mac and Linux and you get the same experience everywhere.

I for one, would like to see the Silverlight 2.0 graphics running on the standard .NET VM and made available on Mac and Linux. We have been using Silverlight ourselves (the Mono project) on standalone mode on the desktop, but its limited to Linux.

It would be great to bring that same experience to Windows and Mac developers and users.

Nikhil Kothari

Posted on 4/8/2008 @ 9:25 PM
Hi Miguel... great to see you comment on one of my posts.

I actually did think about where to put AIR on that spectrum, and at the end decided it goes further to the right. I know Adobe's messaging and intent is probably to position it in the RIA space. However, I personally don't see that quite the same way ... and yes thats an opinion, so let me explain. I didn't put something in the desktop apps space based on cross-platform nature as the deciding factor, but rather on the types of apps and especially around their security and footprint characteristics. An AIR app is very much an installed app, and executes as a full trust app. In their current incarnation, AIR apps aren't sandboxed, and are very much installed (i.e. aren't just executed out of some app cache), even though they could have been technically. That isn't necessarily a bad thing, but it just means the apps are more desktop-like.

The desktop mode is certainly technically possible... we've got some prototypes here. Some of the big questions here are what are the right set of APIs to expose esp. from a sandboxing perspective, but still being more capable than a web app by virtue of executing on the desktop. Partly the desire to run Silverlight 2 graphics on the standard .NET framework is addressed through compat with WPF (for Windows).

CC

Posted on 4/9/2008 @ 7:56 AM
Don't we have to factor in the impact of the new, very light weight machines (MIT, Asus, etc.) on the computing landscape? My guess is that it will add a new dimension to the spectrum above as the total audience expands and parts of the current audience move back to far less powerful machines.. The supportable RIA functionality on these machines will be less calling for even lighter weight pluggins, etc.

Nikhil Kothari

Posted on 4/9/2008 @ 8:24 AM
Certainly new app scenarios are going to pop up all the time, hence the continuum extends indefinitely on both ends. I'd probably put some plugins scenarios, including things like Sidebar/SideShow/Dashboard gadgets in the desktop category ... these are all existing light-weight plugins.

That said, I was mostly focusing on user-facing app scenarios. There are tons of other app scenarios (eg. embedded apps in devices etc.) that I wasn't too concerned about for this post.

Eric

Posted on 4/9/2008 @ 8:25 AM
I personally would like to see Silverlight apps replace HTML/CSS/Javascript, at least in the RIA space. There's nothing like being able to program in a single, compilable, testable, easily debugged language such as C#. It's kind of funny though... because we had all that 10 years ago with the original Sun JDK. Is history doomed to repeat itself? Or will Silverlight prosper because Microsoft controls the desktop and will be able to dictate what virtual machines are auto-updated (deployed) to each machine?

Ash

Posted on 4/9/2008 @ 6:27 PM
I second Eric.. yes history (Sun Applet) repeating again but sun jdk syntax and its slow execution sucks..
i am closley watching on silverlight to be our next web development to replace asp.net / ajax type web development simply because i spend more time for css styling and debuging than functional side.

In silverlight i cannot access FileStream directly. I understand silverlight blocked it due to web security.. how about in case of Intranet scenario, i think local file access should allow for trusted connections.

thanks for the post.
ash.

superjason

Posted on 4/10/2008 @ 6:12 AM
Good post, but in place of Flash, I would probably substitute Flex, or at least mention it. It's more along the lines of what someone would use to compete against Silverlight.

Nikhil Kothari

Posted on 4/10/2008 @ 12:22 PM
Superjason - I guess I tended to equate Flash/Flex, with Flex being a development methodology that targets the Flash runtime... but you're right, it probably makes more sense than "Flash" in that diagram's context.

Ash - technically trying to distinguish intranet from internet is frought with security issues, false detection could mean a ton of problems. To further worsen the problem, different platforms have differing degrees of OS-level APIs to distinguish domains into zones. Finally, if you have an intranet scenario, it might be equally interesting to look at things like ClickOnce...

Rob

Posted on 4/12/2008 @ 1:51 PM
Nit-picking but I don't consider asp.net a "classic" web app, especially alongside HTML alone. If you do that, then you have to put all scripting in there, too. Without scripting, asp.net just generates html so what's the diff?

Michael

Posted on 4/12/2008 @ 4:11 PM
What does RIA mean.

It would be polite to give meanings to these trersm when first used.

Some of us are luddites.

Nikhil Kothari

Posted on 4/12/2008 @ 6:30 PM
RIA = Rich Internet Applications. The expanded acronym itself doesn't tell much, and in fact there is a debate about whether its Rich Internet Applications or Rich Interactive Applications. The term "RIA" is itself more important than either expansion - it embodies the focus on using client-platforms and capabilities with client-side behavior to create more appealing, powerful and functional user interfaces, richer data visualization, and more intuitive user interface flow etc.

Rob - The underlying platform for classic web apps is HTML. And ASP.NET allows you to target that platform. ASP.NET also lets you create Ajax apps that target the HTML + script platform.

mike

Posted on 4/13/2008 @ 5:02 AM
"There could be more stuff on the Ajax front, and for now, I'll say we do indeed have a roadmap thats got some super interesting stuff to look forward to, and that we will be publishing that hopefully soon."

Let me help you out here:

There SHOULD be more stuff... ...publishing that CERTAINLY soon."

There, fixed that for you. Now if you could just make that a reality that would be great, otherwise, spare me the ifs, coulds, and how much you hope to release anything. Actions speak louder than words, and so far I've been staring at this thing called Futures for about 8 months now.

Meanwhile, reading a simple blog (yours) I noticed that it also communicates with silverlight.dlservice.microsoft.com so please stop the BS that it's not about Silverlight vs. Ajax because you know it is (like I said, it's forced upon us while we are waiting for any significant release of ASP.NET Ajax).

Nikhil Kothari

Posted on 4/13/2008 @ 10:39 AM
The reason my blog issues a request to the Silverlight site, is because I have a script that is gathering analytics data around what % of my readers have Silverlight installed. See here: http://www.nikhilk.net/Silverlight-Analytics.aspx. It doesn't however put up a modal prompt or something visible that is forcing a download.

Frank

Posted on 4/18/2008 @ 3:02 AM
The thing is, if Silverlight plugins become ubiquitous, then there is no reason for a .NET development manager to continue with HTML/CSS/JS at all. It will be much easier for the development manager to use C# people for both front and back ends, while moving markup people to tweaking XAML. SEO and such things that made Flash difficult will be much less of a problem for Silverlight apps, if at all. There is a discussion about this here: en.blog.ammado.com/technology/silverlight-is-a-big-deal/

alok

Posted on 4/22/2008 @ 8:39 AM
I am completely with Mike on this. Microsoft, pleI am completely with Mike on this. Microsoft, please stop shoveling crap down our neck.ase stop shoveling crap down our neck.

Carey

Posted on 4/22/2008 @ 7:12 PM
The problem with all this stuff is just that...there is ALL of this stuff...none of it does what you need it to do for a complete business case so instead of just making one of these technologies (or rather programming language mashups?) with all the bells and whistles we get 10!!!

Nobusiness manager is going to invest heavily in any of it.

How the heck are we supposed to keep up? No wonder there is not a lot of skillset in the middle of your spectrum...Too many technologies, scripting laguages, programming paradigms...No one can keep up, no one can possibly develop enough expertise in any of it to make it of any real value other than stupid little animations and one off closed stock quote ticker samples....

Good luck!!

Kelvin

Posted on 4/23/2008 @ 11:54 AM
It's amazing to me that most of the complaints here are focusing on a universal MARKETING tool, NOT a Microsoft tool. I don't see Mike or alok pointing out that Apple, Adobe, and Sun are all guilty of forcing crap down our throauts (and much more so than Microsoft). In fact, if I'm not mistaken Apple TELLS you "how you're going to do it", and "if you don't like it then don't buy it".

If you don't like the technology, don't use it. Pointing fingers because you're having a bad day makes no sense; if you're going to hate, make it universal. As you stated (Mike), Yahoo and others have great frameworks that you're more than welcome to use if you feel that AJAX.net is lagging so far behind.

Nikhil, excellent and informative post.

John C

Posted on 4/26/2008 @ 6:03 PM
I like Carey's comment..
"How the heck are we supposed to keep up? No wonder there is not a lot of skillset in the middle of your spectrum...Too many technologies, scripting laguages, programming paradigms...No one can keep up, no one can possibly develop enough expertise in any of it to make it of any real value other than stupid little animations and one off closed stock quote ticker samples"

You are very right, I spend way more time trying to learn this NEW stuff than I do developing anything usefull. What happened to the simplicity of the Visual Dbase days....where did those tool-guys go? Better find them and have them develop ONE simple to learn and use IDE.

John

Posted on 5/4/2008 @ 3:58 PM
I recently attended our city's annual .Net conference and the presenter on Silverlight 2.0 said, in these words (not quite verbatim) "the great thing about Silverlight is that you can program in C# or VB and won't have to ever worry about programming in that crap called Javascript". The guy is from one of the top .Net 3rd party companies doing Silverlight 2.0 programming.

Clint

Posted on 5/13/2008 @ 8:28 AM
Interesting take on "Ajax vs (or and) Silverlight" Nikhil. I believe the largest frustration around the RIA (however defined) movement is the fact that ASP.NET, and even JSP, largely remove the need for the end developer to focus on how content is generated to the end user. This has been implemented with great care and works well.

HTTP being stateless should not be a concern of a business software developer. RIA reintroduces the need for one to be intimately involved in how to present content to the user. This conflict is intrinsic to ASP.NET because the client is now partly responsible for maintaining state and content delivery (which had been completely maintained by the ASP.NET framework). "You guys" (the ASP.NET team) have made us lazy, by doing most of that work for us! That was supposed to be taken as a compliment.

I had hoped (apparently like others) that Silverlight would be an end to being concerned with state management, content presentation, and the endless perpetuation of changing client targets (ie browsers). There obviously would be some cross platform limitations; however we are already experiencing this today.

This shift toward client heavy interaction is akin to server side scripting placing us back in the day of classic ASP; in which php (cake), ruby (rails), etc are already providing a less painful experience for developing RIA. I really believe the ASP.NET/JSP framework teams have a substantial challenge when competing (purely AJAX speaking) against the others. There is more accountability (rightly so) for support/breaking changes when you have paying customers. This is sobering when you've been in those shoes. Too many critics with no-one providing solutions.

At the end of the day, my end user wants to complete the task at hand with automation help from me. I, in turn, want to deliver the best possible experience in a reasonable time frame. I do not want to have to master HTML/CSS/JavaScript/Cross-Browser/JavaScript Library skills and THEN have to make them work with ASP.NET. Whew! I have enough irons in the fire already!

What bothers me most is that a business software developers time should be spent solving the businesses needs; not tinkering with AJAX "decorative novelties".

Johm Smith

Posted on 5/21/2008 @ 5:01 PM
Interesting that everyone is willing to focus on an "plugin" that compensates for things the browser can't do. Kind of like a car that doesn't come with a stereo, why doesn't the car come with a stereo?
Post your comment and continue the discussion.
 
 
 

 

 
Refresh this form if the spam-protection code is not readable, or has expired. (Your input will be preserved)