March 17, 2006
Richard Grimes recently posted an Analysis of .NET Use in Longhorn and Vista, wherein he draws two conclusions:
- Between PDC 2003 and the release of Vista Beta 1, Microsoft has decided that it is better to use native code for the operating system
- Microsoft has shown no intention so far to use .NET on a large scale on XP or the server versions of Windows, neither in the operating system, nor in their major revenue generating applications.
I agree with the first point. If you're writing an OS, you need to get down to the metal. Managed code trades off CPU cycles for protection from buffer overruns and other C++ nastiness, but I'd rather spend those CPU cycles on virtualization to protect myself. That said, there is Microsoft's Singularity project, which is an OS written entirely in managed code.
But the second point is just plain wrong. The Windows XP Media Center Edition functionality was, and is, written in .NET! Just ask Joel Belfiore:
From a technical standpoint, Media Center user interface functionality is
almost entirely written in C# managed code, on top of native Win32 and
DirectX Windows XP components. These operating system components render
video and draw fluid animations smoothly on the screen at 60 frames per
second, with hardware acceleration and MPEG decoding provided by 3rd
parties. Getting all these technology components to work together well was
our biggest challenge.
Windows XP Media Center Edition happens to be one of the fastest selling versions of Windows at the moment:
Sales of Media Center have reached the 6.5 million mark in just three years.
MCE is a superset of Pro, in that it is based on Pro (it has IIS, etc) but with added MCE functionality. Now check out the newegg.com Windows pricing:
XP Pro : $139.95
XP MCE : $114.95
So you're getting more functionality for less money. Hmm. I wonder which version of Windows is going to sell faster?
I would say the 6.5 million sales of XP MCE to date clearly indicates "[Microsoft's] intention to use .NET on a large scale on XP", wouldn't you?
Posted by Jeff Atwood
First, I like that .NET let's me be much more productive than standard C++ and/or MFC.
Second, MS did not trust .NET enough to write any code that does "60 frames per second". They left that to the Unmanaged code.
Thrid, Visual Studio 2005 has a lot of Managed code. And it shows.
Conclusion, use the best language for the problem. Many times, it will be Managed code, many times it will not.
BTW I noticed after installing the Vista Feb CTP that there is now a MS supplied codec pack that includes an MPEG2 decoder and encoder.
Part of the reason especially for the encoder portion is probably for the new Windows Movie Maker which allows you to author DVDs.
Richard Grimes is a media whore who just likes to see his name on important web pages. The sad thing is I used to like reading his stuff until he decided that being controversial was the way to go. There's plenty of MS stuff using managed code:
Oh and whatever happened to Grimeys promise that he was done with .Net ??? a href="http://www.ddj.com/documents/s=9211/ddj050201dnn/"http://www.ddj.com/documents/s=9211/ddj050201dnn//a
I agree. At this point I'm inclined to just call Grimes an idiot and ignore his pointless rants.
Bill Wagner just posted a list of Microsoft products that contain _millions_ of lines of managed code: http://www.srtsolutions.com/public/item/119090
Ironically, some time ago a link to a Grimes benchmark was posted on JoS that was intended to _support_ .NET. Grimes claimed it proved that C# was just as fast as unmanaged code. Needless to say, that benchmark was bunk as well. Grimes made all the newbie errors of superficial benchmarking to get the results he wanted...
MCE is technically only available to computer resellers
Kinda, but Thurott isn't telling the complete story. Until MCE 2005, it was *impossible* to get MCE unless you had an MSDN subscription. With MCE 2005, it's now available in the OEM channel as a SKU.
And yes, you do need third-party DVD decoding software installed. Why this remains a MCE requirement -- it won't run without it -- baffles me. I asked the MCE guys point-blank at PDC during the QA period of their presentation and they hemmed and hawed. Blah blah blah YOU'RE F'ING MICROSOFT, DO SOMETHING TO MAKE YOUR CUSTOMER'S LIVES EASIER! If you don't have the power to buy and bundle a simple MPEG-2 algorithm that's *required* to use your product, who does? Bah. It's bullshit.
You can buy tons of OEM products; I do it all the time. Video cards, mice, etc.
The way you get around the "must be a system builder" restriction (if it's even enforced; many times it is not) is to buy something that's "hardware" for a buck. A power cable or what have you.
don't put URL's in perintheses when commenting
Just put in a space before the parens. I do it everywhere I post, just in case.
XP MCE isn't really a superset of Pro
Well, it's *effectively* a superset of Pro. According to the post you linked, the MCE Extenders in the 2005 edition of MCE require the Fast User Switching stuff, and FUS isn't compatible with domains.
But I can completely understand Microsoft not wanting XP MCE to join a domain. It'd also be pretty silly to install MCE on a bunch of your corporate desktops -- surely you don't want your employees to watch videos and television at work. ;)
There are two ways to get an XP Pro SP2 level pre-installed on an economical OEM system. Buy a computer with Media Center Edition ( http://nfocentrale.net/orcmid/blog/2005/10/windows-media-centers-been-good-to-me.asp ) or get a Tablet PC. I've done both. Tying the SKUs to platform capabilities seems to have worked well.
I haven't noticed the absence of Active Directory domain support, because my systems are on a SOHO workgroup LAN. I'm gratified that a local IIS can be installed though I haven't tried it yet. (I do fret a little about finding Recovery Console and the fact that my Toshiba Satellite R15 Tablet doesn't provide firmware setup access at POST time. I haven't looked around very hard though.)
I notice in reports about Windows Vista that the MCE and Tablet PC extensions are apparently simply baked into the range of Home editions.
I also think that the distribution of WinFX down-level is certainly an endorsement of .NET, as will be all of the .NET usage and integration in the 2007 Office System.
We seem to be forgetting that the CLR is a compilation-to-platform based system and we're always running native code that accesses libraries with native-code hooks and use of native operating-system plumbing. That gives great engineering trade-offs and a managed-code system. Who cares that it isn't really .NET all the way down?
"Why this remains a MCE requirement -- it won't run without it -- baffles me."
I think it's more a matter of which one to pick and piss all the others off. There may be some kind of anti-trust directive from the lawyers as well. If they bundle one, they effectively take over the MPEG-2 decoder for Windows market and shut EVERYONE else out. They don't want Bill to go on the stand EVER again. He's their greatest liability.
Yes, there is managed code coming out, but the question isn't how much is there, but what is it used for?
The MCE is not a .NET OS, it is a "Media Center user interface functionality is almost entirely written in C# managed code" - ie the GUI is .NET, nothing else (which I like - back in the day, I used to write server stuff in C++, and the GUI in VB as they each had strengths that played to those areas, now I guess I'll just have to do my UI stuff in VB.NET instead)
The link that showed millions of lines of managed code - fair enough, but look at what those apps are - I bet its mostly tools, UI stuff that is designed for you to twiddle with the actual product.
This is natural, you write a tool in the new toy and if it works well, it gets used in the rest of the application. IF it works well...
I've worked on a product that was made for the MCE. Except for the initial scrolling icons .... its just a big "IE" window
That's just the extensibility model for MCE-- and it sucks. The Vista version of MCE adds two new extensibility models.. B) Windows Presentation Foundation add-ins C)"native" MCE add-ins. That's in addition to the existing model, A) HTML and ActiveX.
Good point. I didn't think about that when I posted about this same topic today ( http://weblogs.asp.net/jgalloway/archive/2006/03/17/440499.aspx ).
As to MCE, though:
XP MCE isn't really a superset of Pro, it's a separate version ( http://blogs.msdn.com/mcreasy/archive/2004/10/13/241803.aspx ). The main difference is that MCE can't join an Active Directory domain. I've heard two explanations for this:
1. The MCE price point is lower based on what people will pay for an MCE machine, and domain joining was removed to prevent enterprise use of lower cost MCE over Pro, which is intended for enterprise use. Another way of saying this is that domain joining was removed to allow lowering the price for MCE.
2. MCE uses Fast User Switching, which doesn't work well on domains. There are ways to get MCE to join a domain, but they aren't supported.
Also, as I understand it, MCE is technically only available to computer resellers ( http://www.windowsitpro.com/Article/ArticleID/44194/44194.html ). I'm not sure about how this works out.
Note to self: don't put URL's in perintheses when commenting on Coding Horror blog.