[Pro silverlight argument]
To use the Asp.Net stack, data binding etc...when building an app in Silverlight, there's no real reason for it beyond a mere shell which is a waste since Silverlight can be hosted in Html. That doesn't negate it from use, it's a really good platform for developing web applications. I could ask the same question you did about PHP. Why bother when there's Silverlight or Asp.Net? Isn't PHP the Russian version of ASP? Still, if I picked up a ball peen hammer to drive every nail in a roof I could do it. I'd rather have a roofing hammer though.
[Personal Story Diversion]
I had a salesman at a motorcycle dealership tell me I couldn't ride a bike to the limits of the machine. Nice comment for a guy trying to sell me a bike. What he meant was there are ways of doing things with it beyond its intended use and if you know the tricks (ie: are a good rider) then you can go further with it. He assumed I had no knowledge of how to ride a motorcycle really well. Good assumption, I suck at it.
The problem I have is that there are bikes designed for different purposes and "riding to its limit" is more work than riding one better suited to the task. I bet if I did it just right, if I was that good at maneuvering belching chunks of steel, I could ride a Harley up a sand dune. But why waste my time when I can get a motocross bike with a paddle tire to do it? who cares whether I can ride the Harley to its limit?
[Anti silverlight argument]
"Silverlight is client side" <-- That's what Asp.Net uses JavaScript for, it's called "AJAX". Maybe you've heard of it? It works, and there are plenty of libraries to make really cool client side stuff in Asp.Net/Html.
PLUS Side:
Silverlight has webcam/mic support. Silverlight renders vector graphics so they scale without getting pixelated. Which is good if porn ever goes vector cause that shit's gonna take off! It handles animation so you can make things move around in c#/xaml. Silverlight uses XAML so it's all "declarative". Expression Blend has a cool styled interface so you can feel like a designer sipping your starbucks in a fancy indie coffee shop while trying to figure out how to move a border 5 pixels left without fucking up the stack panel or nesting yet another frigging element in an already complicated markup file.
MINUS Side:
Silverlight handles animation so you can make things move around in c#/xaml. Has anyone EVER done ANYTHING in GDI? Silverlight is an improvement. Okay...have you EVER done ANY animation with a software package that was meant to do animation (not programming). No? I didn't think so. That's why you moron developers bought the "Expression Blend is SOOO cool" shtick hook line and sinker. At best it is a poorly implemented animation experience. Very poor. I could go on for hours about how bad it sucks to create animations in Expression Blend/Silverlight/C#/Xaml...you would never have to know so much in a real animation package to do basic stuff, LOB app stuff. Not in Blend though. OH NO!!! You have to feed the slop to the pigs then turn around and fuck the dog in the ass before you can call it a day in Blend...
XAML is a complete mess. Dump all you food in the sink and then eat it...that's XAML. Hey! I've got an idea! Let's make EVERYTHING declarative! That way it's all in one place, but you have to know the tricks to get it to do what you want. Gee...sounds familiar! Maybe if I stick a static resource up my ass I can ride XAML to its limits...
In Asp.Net you HAD to separate client side and server side. It became common to separate style vs structure and even further semantic definitions of data. All this adds up to keeping your code in categorized places. Separate code was placed in different file extensions, different folders, even the syntax was different sometimes, which made the learning curve steep but helped mentally differentiate structures. When something needs changed or is broke, I know where to fix it. I know a style problem is in the damn CSS file not inline or in a static resource later referred to in a bazillion different places. With XAML all that shit gets mashed together in a Cartman-TrapperKeeper cyborg mess of undecipherable unmaintainable code. You don't get a choice...that's how ITS DONE! Oh, but its the latest things my precious, and its (buzzword!!! DING DING DING) "declarative".
Best practice in Asp.Net beats the pants off of what's being churned out in MVVM, MVP, MVVPLXKJY MVFUCKYOU. All the Silverlight patterns do is address getting data from your BO to the UI so you can test it separately. Hooray! Not. Have we all had to debug unit test code enough yet? Have we all beat our heads against a wall long enough to finally realize that if we documented the product well enough the testing could happen in frigging QA and not in development? I guess if you're not there yet go pick up the latest build of CSLA.Net and have at it. You know the one...that was released with all the changes before the book was scheduled to be written...
But I digress, so in summary:
Sometimes I wonder why anyone would make anything in Silverlight.