Microsoft products using the .NET Framework


In the comments of Scott Hanselman’s blog posts on why VB developers don’t switch/migrate/convert to VB.NET, someone replied with the following:

So what application has Microsoft written totally in .NET that is worth a [expletive]?
Visual Studio – NO, Office – NO, Notepad – NO, Calc – NO.
Why haven’t they? …..

Here’s my response. While the .NET Framework hasn’t been around for a long period of time (shiping in February 2002), there is quite a lot of work being done by different teams to use the .NET Framework across Microsoft’s product line. Below is a quick list of just some of the ways we’re using managed code in products that ship today and how we plan to use managed code in the future.

Windows Client

  • Windows XP Pro/Home was released before the .NET Framework which is why it was not included in the box. That being said, Soma points out the 70+ million who have downloaded the .NET Framework using Windows Update (note that the 70M number includes all versions of Windows). In fact, there is a lot of debate about why we didn’t include Windows XP Service Pack 2 (XP SP2) with the .NET Framework, although most feedback agrees that we should not require installing new features in a service pack that don’t relate to security/bug fixes.
  • Windows XP Pro Tablet PC Edition includes the .NET Framework and the Tablet API is written using the .NET Framework.
  • Windows XP Media Center Edition includes the .NET Framework and includes MCE-specific applications written using the .NET Framework.
  • Windows “Longhorn” dramatically increases the amount of managed Windows code including components like WinFx, an all managed API,  “Avalon”, a managed presentation layer, and “Indigo” a messaging stack, all using managed code.

Windows Server

  • Windows Server 2003 shipped with the .NET Framework 1.1. New features like Sharepoint Team Services and UDDI Services are written in managed code and require the .NET Framework. 
  • Small Business Server 2003 shipped with the .NET Framework 1.1 and includes some SBS-specific applications like Remote Web Workplace and the Backup Snap-in written in managed code. 

Office
While Office is a little behind in adopting the .NET Framework, you’ll still find the .NET Framework in use, athough probably not as much as you would probably want. Then again, Office is also expanding itself from being stand alone applications to a fully integrated set of tools for collaboration as witnessed with the Microsoft Office System, and our server products with Web front ends pretty much all use ASP.NET.

  • Office 2003 Professional Edition includes the .NET Framework, but I believe this is an optional install and is primarily geared for using FrontPage 11 with ASP.NET. Outlook’s new Business Contact Manager is primarily written using managed code and requires the .NET Framework.
  • SharePoint Portal Server 2003 is written using ASP.NET.

Windows Server System

  • SQL Server 2000 was released before the .NET Framework. Even so, managed providers for SQL Server 7/2000 were included in the .NET Framework 1.0/1.1.
  • SQL Server Reporting Services shipped after SQL Server 2000, and is primarily written in managed code.
  • SQL Server 2005 (“Yukon”) will natively host the .NET Framework 2.0, meaning you can write managed database objects like user defined types, stored procedures, triggers, and more in managed code.
  • Exchange 2003 included managed code for it’s mobile UI.  Outlook Mobile Access is written in managed code using ASP.NET mobile controls.
  • BizTalk 2004 has parts written in managed code.
  • Commerce Server 2002 has parts are written in managed code.
  • Content Management Server 2002 has parts are written in managed code.
  • MSN Messenger Server includes a presence server and admin/config tools written in managed code.
  • Microsoft Business Network has parts written in managed code and requires .NET Framework 1.1.
  • MS-CRM has parts written in managed code.
  • Speech Server 2004 has parts written in managed code.

Developer Tools

  • .NET Framework 1.0/1.1 has parts written in managed code.
  • .NET Framework 2.0 has parts written in managed code
  • Visual Studio .NET 2002/2003 has parts written in managed code.
  • Visual Studio 2005 has parts written in managed code.
  • ASP.NET Web Matrix is fully written in managed code.

Microsoft Web Properties using the .NET Framework

Microsoft Internal applications using the .NET Framework

  • Account Explorer 
  • HeadTrax
  • Consensus
  • MS Contract
  • eSupport
  • Enterprise Product Roadmap (EPR) Explorer
  • TSP Academy Virtual Instructor
  • Country Manager Content
  • TANLink Contributor and TanLink Explorer
  • Contoso Enterprise Demo v2 – Hotel Desk

Does this mean Microsoft is only developing in managed code? No, definitely not. I would say the #1 language in use at Microsoft is C/C++. We also invest heavily in C++ and help support developers who need the power and performance C++ offers. We also have, in my opinion, the best C++ compiler of any platform.

And we’re just getting started…

 

 

 

Comments (58)

  1. murphee says:

    Excuse me, but this blog entry can be summarised as:

    A person asks you "Why aren’t the big MS applications written in .NET? Where is a pure-.NET copy of MS Office?" and you answer by "Well, a lot of MS products *bundle* .NET". Did I understand that correctly?

  2. Murphee: I think you misunderstood me. These aren’t products that just *contain* the .NET Framework, these are products *written* in managed code. We are developing our products, our Web properties, and our internal applications using the .NET Framework.

    Thanks,

    -Dan

  3. In that case, Dan, please write for me a small editor entirely in managed code – with no unsafe code – that allows me to write text in hebrew and English.

    Constraints:

    Must not use Richedit or IE. Must be an editor written from scratch.

    Answer?

    You can’t do that. You need Uniscribe support and GDI support to do it – .NET only gives you GDI+ support.

    Show me nice, fully-fledged Winforms apps that don’t touch native code libraries via Interop, and are written entirely in .NET, and I’ll happily jump for joy. But until I start seeing major apps written entirely in .NET and not in C++, I’m going to avoid it like the plague.

  4. Simon,

    Why would I write my own editor from scratch rather then using a pre-built component? If you asked me to create an editor, I would probably start with an existing component or control rather then create my own. Are you just trying to display text in Hebrew and English in a single text area?

    Second, if you say that you can’t use .NET for this, what are you going to use instead?

  5. Dan Fernandez wrote:

    > Why would I write my own editor from scratch

    > rather then using a pre-built component? If

    > you asked me to create an editor, I would

    > probably start with an existing component or

    > control rather then create my own. Are you

    > just trying to display text in Hebrew and

    > English in a single text area?

    Oh, I don’t know. Maybe you’re writing something that RichEdit can’t handle. Like complex tables. Or maybe you’re writing something that the IE control can’t handle. Like correct page layout. Or maybe something that both can’t handle – like typographic quality, resolution-independent layout. Or perhaps you’re writing an Office clone. Or script editing software which has very specific layout requirements.

    > Second, if you say that you can’t use .NET

    > for this, what are you going to use instead?

    C++ and Win32.

  6. BTW: that would be correct page layout as in layout on a printed page.

  7. Simon,

    It seems like there would be two options for this. As you wrote, you can use C++ and Win32 to build the entire application. My point is that you don’t need to write the entire application in C++/Win32, you can either write the entire application in C++ and run with the /clr switch to run on the .NET Framework, or you can Pinvoke into the specific Win32 components you need and write the rest of the application in VB/C#.

  8. I agree – and that’s what I’d do.

    However, here’s the problem.

    The topic you’re responding to is this one:

    "So what application has Microsoft written totally in .NET that is worth a [expletive]?

    Visual Studio – NO, Office – NO, Notepad – NO, Calc – NO.

    Why haven’t they? ….."

    I’ve given one reason why major apps are NOT written exclusively in .NET – the necessary typographic stuff just isn’t exposed through managed code; you have to dig down into win32.

    Surely the correct solution is to fix this?

  9. Well of course then there is the fact that even in Vs.net 2005 winForms still stinks in many ways.

    1. DateTimePicker still doesn’t support null (hence why MS doesn’t use it anywhere in any of their products .net or otherwise)

    2. Combo controls suck in all but vs.net 2005 and even then they have a long way to go, fortunately I’ll be able to wrap them and fix all of the rest of the junk that is totally broken.

    3. MDI parents hosting owned controls (not MDIchildren) is completely broken (still in Vs.net 2005)

    4. Transparency is totaly screwed in Vs.net 2003, sort of fixed with Vs.net 2005.

    5. Theming is completely screwed in Vs.net 2003, sort of fixed with Vs.net 2005.

    6. No Balloon tooltip control in vs.net 2003 and the one in Vs.net 2005 is completely broken and unusable because there is no per-control control over the title and icon.

    7. And Lastly (there’s more, but I got bored): Can’t reproduce Office, Vs.net or any other current MS application out of the box with the functionality that is currently provided in .NET Winforms without having to write custom controls that pinvoke.

    And the list goes on and on. .NET is great and very powerful and really solves lots of problems, but if you want to do WinForms, you better invest in a control package from another manufacturer for $400-700 or more per development machine if you want to do anything usefull with even a marginally useful Gui. This is shameful. MS: Learn! Every version of vs.net is not complete until every GUI element that you have introduced in Office or Windows is available for use in the framework. That means the task thing in XP, combo controls that work, date time pickers that work, etc. etc.

    This is the point that so many developers are getting at when they say MS obviously isn’t using the .NET framework to write windows applications. If they were, then we wouldn’t have this mess that is winforms because your own people would revolt if they had to use the crap that is in the framework. Eat your own dog food and I bet Winforms get one hell of a lot better VERY quickly.

  10. Hi Simon,

    I agree with you that to have a large client application running fully on the .NET Framework is probably more difficult then it needs to be. For one thing, if the .NET Framework isn’t installed on the machine, your setup exe needs to be unmanaged to bootstrap the installer. That said there are plenty of applications use both the Framework and Win32. As you say, the correct solution is to make a much larger portion of Win32 available as managed libraries, and that’s the goal of Longhorn and WinFx.

  11. Hey James,

    It seems like all of your points and the points of others are about using the .NET Framework for client Microsoft applications.

    In any case, I’ll see if someone from the Windows Forms team can respond to the specific list you raised. To your point about what type of UI is possible, Joe Stegman recently did some videos for channel9 where he showed what type of UI was possible using Windows Forms 2.0. The samples are also now up on the Web as well….

    http://channel9.msdn.com/ShowPost.aspx?PostID=21706#21706

    http://channel9.msdn.com/ShowPost.aspx?PostID=21657

  12. FluffyDevilBunny says:

    What about Movie Maker the team that Eric Gunnerson went to? It’s suppose to be C#.

  13. C++ guy says:

    I can tell exactly what part of Visual Studio uses .Net:

    Right click on your project in the Solutions pane, and click "Properties." Wait 3-5 seconds and the properties dialog pops up. How do I know this uses .Net? Because it took 3-5 seconds to load. On the same machine, MSVC 6 shows the properties dialog nearly instantly.

    So why not make your users wait an extra 3-5 seconds, and switch to .Net today!

  14. Mark Levison says:

    James and Simon – you’re both complaining that no real applications are written in .NET?

    Does an OLAP tool (web reporting and data analysis – as marketing would have me say) count as a real application?

    Checkout our application via my blog entry: http://dotnetjunkies.com/WebLog/mlevison/archive/2004/10/18/28961.aspx

  15. Pretty reasonable – but remember, there are large classes of apps that are excluded right now from being implemented in .NET.

    The bigger issue I have is that I’ve not seen more apps released by MS written exclusively in .NET and not in a melange of C++ and C#.

    That’s not what I call dogfooding the framework.

  16. Anonymous says:

    How many new microsoft apps dont use .NET at all? I would guess not very many. Microsoft seem to be using both .NET and Win32. Whats wrong with that?

    .NET is new. Win32 has had a long time to evolve. The longhorn wave will bring .NET to more enterprise applications.

    Why not go develop Dynmaic Web Sites using Win32…..if you work with Web Development and Windows App Development being able to use the same language and framework is bliss!

    There is no doubt that .NET has its place, and microsofts investment in this cant be doubted.

  17. PhilS says:

    The place for .NET is developing ASP.NET based web applications, why else would anyone use it? I think most of the internal Microsoft applications:

    * Account Explorer

    * HeadTrax

    * Consensus

    * MS Contract

    * eSupport

    * Enterprise Product Roadmap (EPR) Explorer

    * TSP Academy Virtual Instructor

    * Country Manager Content

    * TANLink Contributor and TanLink Explorer

    * Contoso Enterprise Demo v2 – Hotel Desk

    are probably browser based… The perfect use for .NET at this time, I think, and where most of my effort is going at the moment.

    Phil S.

  18. To refute your point, they’re not all browser based. About half are. For one example case study on a smart client application we’re doing in-house, you can read about how we implemented Headtrax at: http://www.microsoft.com/resources/casestudies/CaseStudy.asp?CaseStudyID=12055.

    There a lot of great client applications using the .NET Framework, from TabletPC to Visual Studio .NET to Outlook Business Contact Manager to external applications like KeyHole, SharpReader, iPodSoft, OnFolio, and lots of our customer applications too – http://www.windowsforms.net/Default.aspx?tabindex=9&tabid=48.

    I’m not bashing Web applications, but to imply that .NET is only for Web applications is a stretch. Whether you’re talking about background application services, or classic desktop applications, or to extending Office, or creating applications for devices, the .NET Framework is better then anything available.

    What would you use for developing client applications instead of the .NET Framework?

    Thanks,

    -Dan

  19. Alex says:

    Dot Net seems to be something nice to me the way it is designed etc. But it does not seem to be big enough of an improvement over what we currently have in order to switch. For most real life applications at this moment of time dot NET is a draw back. Some software simply cannot be written using dot NET. I personally do not see any advantage of using it. Nevertheless dot NET seems to be taking off somehow, as some developers use it (or forced to use by their "bright" managers) and some "smart" users now ask "Is your software dot NET ?" It reminds me the way it was when Windows OS first appeared. No serious developer in his right mind would suggest back then to develop for that new Windows platform, as it did not bring anything but bugs. Yet end users liked the GUI, and so it went ahead with a lot of pain. Finally we are all here with a reasonably well implemented Windows. Now what ? Start all over again ? Rush in and use something you do not need just because it is there …

  20. I’m a beta tester for Vs.net 2005, so I’ve been there since the Alpha. Yes, there are ALOT of improvements to WinForms 2 (all of which should have been in V1 before Vs.net 2002 was ever released). However there are still glaring ommissions like what I referenced that demonstrates that MS is not writing any large scale applications in .NET. If they were, then there wouldn’t be a DateTimePicker control that doesn’t support no entry (NULL) and a balloon tooltip that doesn’t allow you to change the title and icon per control instead of per extender.

    That’s the point, and yes, I have a 5 million line program in C#, so yes, it can be done. But a lot of that 5 million lines was writting my own HTML editor that wraps mshtml.dll (still not properly implimented in Winforms 2), writing a combo box control that works intelligently instead of the garbage that’s there even in winforms2 (i.e. still no linked list support that we had even in VB3!), a datetimepicker that supports null, a color combo, a balloon tooltip extender that actually works right, a spell checker that like mac should be part of the OS and part of the framework, and on and on. Yes I did this stuff myself. Why? Because the 3rd party products are buggy crap for the most part (not that mine isn’t, I just happen to be able to FIX it, instead of waiting on my hands for others to do it when they feel like it), and the stuff that comes with the framework is from the 80s. None of the design elements in winforms V1 are at all improved from VB3 (pro edition) controls. They are exactly the same (actually worse because no linked list in .net for combos!) V2 brings it up to about 8 years behind MS’s own GUI standards (with some exceptions like pretty toolbars etc, but even then they don’t work even close to the way that Word 2003 ones work out of the box).

    When vs.net 2005 is released I should be able to reproduce (if I wanted!) out of the box without any special code every single GUI element in every single MS application released in that same year. If I can’t, then you’ve failed your developers Microsoft. That is the only litmus test that you should hold yourself too (well and stable too) and you’re not doing it, instead your making excuses and justifications like this article. My personal favourite was the response I got back from my submissions about linked lists in combos and the response I got about the Datetimepicker… go read them on the bug reporting thing, it’s public and it’s hillarious!

  21. oh, of course and then there is Closing… which is virtually useless because it doesn’t tell you WHY it’s closing thus you can’t use it for anything usefull because if you were to actually cancel something here you would cancel OS restarts and shutdowns etc. That’s a really bad thing…. of course VB6 has this nicely handled with QueryUnload but we don’t get that functionality either and it still isn’t there in Vs.net 2005 as far as I can tell….

    More proof that MS doesn’t eat it’s own garbage in the case of .NET winforms.

  22. me says:

    How do I find out if I have .Net framework installed on my win Xp pro SP2 machine?

  23. One way to tell is to see if you have the following directory:

    C:WINDOWSMicrosoft.NETFramework. Under the Framework directory, you will see folders for each version of the .NET Framework you have.

    – v1.0.3705 is .NET Framerwork 1.0

    – v1.1.4322 is .NET Framework 1.1

    – v2.0.40607 is .NET Framework 2.0 Beta 1

  24. Julian Gall says:

    It’s interesting that no non-developer client applications are on the list. Might this be because .NET languages are too easily decompilable? It would make the internals very visible to anyone wanting to look. Almost like open source 🙂

    Julian

  25. Outlook’s Business Contact Manager would count as a non-developer client application. That being said, you can pretty much decompile any technology, whether that’s C++, Java, or .NET code.

  26. Mark Levison says:

    Julian,

    Does our "Analysis and Web Reporting" tool count as end-user? (I mentioned in a previous comment).

    http://dotnetjunkies.com/WebLog/mlevison/archive/2004/10/18/28961.aspx

  27. Dave says:

    "invest heavily" link is broken

  28. Dave says:

    The Lookout Outlook plugin is .NET I think

  29. Thanks Dave, I updated the broken link

  30. Blog E says:

    Richard Grimes 是我一個蠻欣賞的專欄作家,他對於 Managed Extensions的相關研究,最近一直是我研讀的範本,不過由CSDN上面的一篇新聞 [.NET陣營在些波瀾~微軟專家.NET失望之極~],Richard Grimes 卻一語道出許多他對於.Net Framework 的失望,~~~當然~他的批判中的許多內容,我還需要一些時間與功力去參透它,當然微軟.NET…

  31. photon says:

    .NET is not as slow or messed up in terms of performance as it might seem. People instantly cry about "slow performance" and lots of interop overheads. Just the fact that your code is compiled to CIL does not mean that it has to be slow (theoretically, yes – but practically, a big NO)!

    I agree with the fact that each and every .NET method call involves a lot of overhead and is generally any app written is .NET is significantly slower in STARTING UP. JIT compiling ensures that as you use more and more features of your app in a single go, more and more code gets compiled to machine code and hence the performance reaches that of a native Win32 app.

    Time-critical and computationally expensive applications such as 3D renderers also perform well even when written in managed code. Apart from the long startup time, performance loss is barely apparent, if at all. This is even when using a managed graphics API such as Managed DirectX (or the Tao framework for OpenGL).

    I think most of the people here are complaining about the .NET libraries lacking in terms of number of components. I agree – even to play a sound – you have to goto Win32 – not acceptable!

    If MS learns quickly enough and ports the Win32 GDI and GUI components to managed code fully (like they have done for DirectX – making it as powerful as the unmanaged version) we could definitely see some better results. .NET is indeed a step in the right direction.

    We have been living through the Win32 hell for far too long – it was about time languages like C# and libraries like the .NET framework came up and, in my opinion, they are going to become the most popular tools to develop apps (but not in the near future – not at least till Longhorn comes out).

  32. MR Swash says:

    Sence .net framework v2 released, i have a very bad headache…. is there anyone can help me? I unistalled .net framework v 1.1 (Using Add & remove component) and then i installed .net framework v2. BUT still The operating system (Windows 2003 (Server)) is using .net framework v 1.1.

    the interesting part is, when i check add & remove component in control panel.  i can only see .net framework v2 but when i check the conf file it points to v1.1 and then i check windows.net  i can see both folders… so what shall i do? shall i delete .net framework v 1.1 manually? is it not going to couse problems?.. ASAP ..

  33. Shane Gibson says:

    I just love how MS tries to defend their VERY incomplete product and help files with yet more useless non-reality examples. Has anyone at Microsoft ever tried writting anything outside the realm of "Hello World" with the very limited data binding model and ADO.NET? And don’t even get me started on the WinForm controls.

  34. Hi Shane,

    Have you looked at the patterns available in the Enterprise Library – http://msdn.microsoft.com/library/?url=/library/en-us/dnpag2/html/EntLib2.asp?  

    What is an example of a complete product that you are comparing Visual Studio too? In other words, rather than talk in generalizations, what specifically would you have us fix?  

    Thanks,

    -Dan

  35. Shnae Gibson says:

    One thing you could fix that I have seen other agonizing over, as well as myself, is the DataView.RowFilter size limitation. I have not seen this documented by MS. I built a class that dynamicly builds the RowFilter string. My DataTable contained tens of thousands of rows. I isolated the crash to the application of the Rowfilter. It seems the rowfilter has a size limitation, though string data type does not. I used several techniques to limit the number of values( in this particualr query there were several thousand and the column name …"column = value AND" + "column = value AND" etc) including IN clause. This will eventually still break as my table grows. Why is there a limitation on the RowFilter size? I can’t imagine someone doing this on accident.

  36. Hey Shane,

    Good find 🙂

    With the help of some folks, I tracked down Mark Ashton (blog at http://blogs.msdn.com/markashton/ ) who owns this feature. It turns out this isn’t documented anywhere and it’s not a limitation on the string type, but rather that you can only perform a certain number of binary operations in a filter string and this number isn’t set as it’s dependent on the stack depth.

    One possible workaround Mark suggested would be to manually filter the data and copy the result to a separate DataTable and add a new DataView on that table without a filter.

    Mark said he would add a blog post discussing this issue in detail soon as well.

    Thanks,

    -Dan

  37. Katherine says:

    I have a stand alone pc Win XP Home Edition, SP2.  Home use only.  I am only user.  I use it as my amenuensis, catch-all, secretary, appointment clerk, documents, etc., etc. as well as other odds and ends.  I also use MONEY for my finances.  Do I absolutely need .net framework?

  38. Katherine,

    No, you don’t "absolutely need" the .NET Framework, although you may eventually want to use an application that requires it, like say you upgrade to Windows Tablet PC or Windows Media Center, or other applications, like an RSS Reader that requires the .NET Framework.

    Hope this helps,

    -Dan

  39. jalpesh says:

    Hello,

    Well,Live.com also developed in asp.net

  40. Alex Taylor says:

    Site – very comprehensive and meticulous from all sides, its good! Just excellent website, I sure!

    http://caverta1.blogcu.com/ Caverta Online

  41. I wanted to thank you for the time you spent building this page. I will visit your website again. Thank you

  42. Adrian Roman says:

    Produse Microsoft dezvoltate pe .NET Framework

  43. Kal says:

    Is this depate really going till this moment, come on guys, do you expect that MS will throw away all the code they have written since 85 just to prove a point!. that .NET works.

    well i guess with the release of WCF/WPF/WF the debate is entierly deferent.

    Kal

  44. Two of my ISVs were asking about Microsoft applications which use the .NET Framework. When I had a quick

  45. You’ve been kicked (a good thing) – Trackback from DotNetKicks.com

  46. Alex says:

    How do I find out if I have .Net framework installed on my win Xp pro SP2 machine?

  47. Mario Hasiro says:

    Outlook’s Business Contact Manager would count as a non-developer client application. That being said, you can pretty much decompile any technology, whether that’s C++, Java, or .NET code.

  48. Malo_77 says:

    I have been getting hacked by the maasad, cia ,fbi, and nsa, for years. I can tell u one thing, I always suspected that the .Net Framework, was key for hacking.

  49. gaz says:

    Don’t supposed there is an updated list of MS products that are primarily written in dotnet?