Colloquial name for the CommonLanguageInfrastructure/CommonLanguageRuntime (and probably several other CommonLanguageSomething abbreviations that i can't think of right now).
See MicrosoftDotNet for MicroSoft's implementation, and MonoProject and PortableDotNet for OpenSource/FreeSoftware implementations.
----
'''When Should We Use .NET ?'''
* ''When you boss asks you whether you are with him, or want to seek better opportunities elsewhere '':)
This is the most important or at least the very first question to be answered of all. But here, just as everywhere else, silence reigns. I've been raising the why-question for over a year now, but got only two answers, both of 'm not very convincing:
* ''because everyone's going to use it''
* ''because Uncle Bill wants us to''
WdW
Ok, if you want some real answers from Microsoft, use .NET...:
* because you get stuff done faster - building stuff is easier
* because what you build runs more reliably and faster
These are essentially the same reasons people moved from C++ to Java. Now hold on, I hear all you C++ weenies saying, "wha? Java faster than C++?" and the answer is, "Sure!" in many cases. And the same applies to .NET. Complicated things get much simpler in the managed runtime of .NET, and therefore run more reliably. Also, because the common language runtime does lots of work for you, in an optimized way, oftentimes real world apps will be faster. a micro-benchmark like linpack will still be faster in C++, but most real-world apps will run better in a managed environment.
This is borne out by customer experience. .NET 1.0 was introduced in February 2002, 1.1 in April 2003, and 2.0 in November 2005. In all cases customers began using it because they get stuff done faster, and the stuff they get done, works better.
If you listen to MiguelDeIcaza, progenitor of Mono, he selected the .NET model because it fostered re-use.
--DinoChiesa
----
'''When Should We Not Use .NET?'''
* ''When BillGates tells us he has the NextBigThing ready''
Again, for some real answers from Microsoft, don't use .NET when...:
* you want maximum possible performance and you are comfortable with C++
* you are building device drivers (in which case use C++)
* you want maximum performance in database logic (in which case use T-SQL)
* you don't want your executable to be decompiled (as in reverse-engineered)
Otherwise, .NET is the mainstream model for applications that run on Windows clients, devices, and servers.
--DinoChiesa
''heh, I initially read 'in other words' for otherwise''
----
( rant removed, because BadCodeCanBeWrittenInAnyLanguage ).
Please point me to some programs which use DotNet that do anything useful? i.e. what exactly is the point, in real world terms? (bill-me for Smilies, bill-me for emotioncons? bill-me for conversations? Through a virtual machine of some sort, versus through TCP/IP? Sorry, I'm missing something here.).
The point is, it's easier to build. Some examples of real things built on .NET:
* Snap''''''Stream's BeyondTV - PVR built entirely in managed code.
* Paint.NET - open source photo editing package built in .NET, see http://www.eecs.wsu.edu/paint.net/
* Broderbund PrintShop 20 Deluxe and PrintShop 20 Professional Publisher Deluxe
* Autodesk's AutoCAD 2005
* SVCD2DVD - see http://www.svcd2dvd.com/
* Dot''''''Net''''''Nuke - portal built on .NET and ASP.NET
* Rss''''''Bandit - free RSS aggregator , see http://www.rssbandit.org/
* Community''''''Server - portal, forums, blogs, gallery; see http://communityserver.org/default.aspx
* SQL Server Reporting Services
* Jet''''''Brains Omea Reader - see http://www.jetbrains.com/omea/download/reader.html
* Windows UDDI Services - part of Windows, built in .NET
* Office 2003 Business Contact Manager - part of Office, built in .NET
* GB PVR - personal video recorder (currently free) - http://www.gbpvr.com/
* Windows Media Center - extensions almost entirely built in .NET
* other PVRs too
* SharpDevelop - open source IDE built entirely in .NET, see sourceforge.net/projects/sharpdevelop
* HgLab - source control management system for MercurialVersionControl with push and pull server, streaming support, repository browser, ActiveDirectory integration and a whole slew of other goodies - http://hglabhq.com
* FlexWiki - open source Wiki built in C# (and running on .NET), see sourceforge.net/projects/flexwiki/
* a number of other wiki's too
----
'''Frequently and Not So Frequently Asked Questions'''
Q. '''Is MicrosoftDotNet just a fancy term for Client/Server?'''
A. No. .NET implies managed code, a common language runtime and base class library.
Q. '''Is MicrosoftDotNet better thought of as a system of federated services (on servers) for clients?'''
A. No. There was a thing called MicrosoftHailstorm, which was intended to be a federation of services. But that did not happen. It was announced around the same time as the .NET Framework, but never delivered.
Q. '''Why the confusion around MicrosoftDotNet ? '''
A. Probably because Microsoft attached the .NET moniker to every product that got revised within a certain window, and so the marketing term had no value or meaning. But since then .NET has been "pulled back" to refer primarily to the common language runtime, the base class library, and the associated technology.
----
'''Discussion about Reformatting this Page'''
''note: this page currently has 171 BackLink''''''s, whereas MicrosoftDotNet has 104. One of them should probably be refactored out, but not without someone updating the relevant pages - replace references to DotNet used in a vendor-agnostic context with links to CommonLanguageRuntime or CommonLanguageInfrastructure, maybe, and references where it's used to refer to Microsoft's implementation with links to MicrosoftDotNet?'' --MikeRoome
* MicrosoftDotNet is a mouthful, and I also use DotNet in the same page later on. If I edit a page that discusses a generic technology, and I want to introduce an MS perspective, then I would be tempted to use the full name the first time around. I think for searching related topics one should probably look at it from CategoryDotNet, then go through DotNet links for additional entries. I would not use MicrosoftDotNet What do you think, Mike? -- DavidLiu
Given the existence of GNU pNET and Mono, MicrosoftDotNet would not be an accurate WikiName. Granted, .NET is specifically a microsoft term (when it's not a TLD) but it's become pretty much generic
* I take your point, but at this moment (2004) DotNet from nonMicrosoft sources is not commercially viable (or am I wrong?). When we start seeing other versions of DotNet being used in Fortune 500 companies then it is time to re-examine the names used here. -- DavidLiu
* I suggest for now it is sufficient to mention that other DotNet initiatives exist (outside MS), and these efforts are laudable. -- dl
* I think the Mono guys would be very unhappy with that statement, they have released 1.0 as of June, and I've heard it's pretty damn good.
----
''because you get stuff done faster - building stuff is easier''
Could you go into a little more detail?
Is this entirely because of ManagedCode, or is there something else involved?
''In all cases customers began using it because they get stuff done faster, and the stuff they get done, works better.''
InAllMyYearsIveNever seen anyone ''begin'' using something for those reasons.
People begin using a new tool because they ''suspect'' this tool might help them do stuff faster/better.
I'll probably begin using DotNet next week.
I might use it for a few weeks and then decide I get no benefit from it, and toss it.
Or I might decide it's kinda nice and keep it.
There's really no way for me to tell right now. That's why I'm doing the experiment.
I *am* pretty sure, ahead of time, that it won't let me develop an order-of-magnitude faster,
because the NoSilverBullet essay by FredBrooks has pretty much convinced me that's not possible.
It would be nice, if I knew what sort of more subtle 5% and 10% improvements to look for in this experiment.
What tasks am I'm doing right now that this Dot Net lets me skip over, so I can focus on more important stuff?
----
I started using .NET back in 2004, when it could have been described as an "emerging" platform. I dove in the deep end, and rewrote our main product - a high-end 3D game engine and tools - in C#, and was pleasantly surprised. I'd never even consider writing complex game code in C++ again.
.NET 2.0 made things even better, and now .NET 3.5 with C#3 is incredible.
I think the biggest wins here are:
* If you simply cannot write through a stray pointer (because there are none!), all those *really nasty* memory bugs go away. You don't need the debugger nearly as much.
* The library is (for the most part) decent. Sure, there have been the occasional BrainFart contributions from Uncle Bill (Managed DirectX and its successor, XNA, are definitely two of them)... but the basic stuff - strings, collections, networking - are very usable. The newest stuff ("MicrosoftLinq") is also interesting... we've found we like all the new library support it adds, but shun the SQL-like syntax.
* If you need to do interop with legacy stuff - COM, native DLLs, etc - it's generally painless. For the really tricky cases, (COM without a useful typelib, a la DirectX) C++/CLI is great.
* The performance is great. Its good enough to build cutting-edge 3D games in - I know, because we've done it. Maybe 5% hit, but the productivity benefits are worth so much more than that.
All in all, for anything but the most constrained embedded development, I'd recommend it. Well done to Uncle Bill on this one.
----
I haven't written a high-end 3D game engine, but I think XNA is pretty good, certainly good enough for a hobbyist game programmer.
---------
'''Configuration Hell'''
I'm trying to switch to dot-net, and am having tons of headaches trying to get even basic Hello World programs to run the same on test and production server. (That's why I've been so quiet of late.) I've googled all over for tips and add funny bureaucratic tags, remove funny bureaucratic tags, etc. and still the sucker won't run right on both. I've never had this kind of crap using ColdFusion for almost a decade. Version 6 CF apps usually ran just fine on version 9 on both test and production without a single fricken change to the source code, and the few that did need changes were obvious to track down. It makes DLL-hell look good in comparison. Changes in dot-net source fix one thing and break another in a diff environment. Dot-net appears to be a potpourri of disparate and different-schedule-of-change components forced together under the polluted glue known as "dot net". Arrrgggg. -t
''You mean you're trying to switch to ASP.NET? *.NET is a much, much bigger world than just the webby stuff. It's kinda like how the Java world is much bigger than just JSP. In fact, it's exactly like that.''
* EditHint: feel free to move it to a more appropriate topic.
''I solved all my ASP.NET problems by using PHP. Almost simultaneously, my office-mate solved all his PHP problems by using ASP.NET. I'm not sure what to make of that, except to note that there seem to be UNIX people who can get things done with PHP whilst Microsoft things break, and there seem to be Windows people who get things done with ASP.NET whilst UNIX things break. Maybe you're a UNIX person?''
Unfortunately, I didn't have a choice of language/tool. It's what the shop uses. I'd much rather use PHP if given a choice. (I've used PHP before, but I still prefer CF's less type-tag oriented typing system to PHP's). And ASP.NET does remind me of Java in many ways. When MS clones something out of fear, they really do clone it. Part of the problem is that I need "conditional controls". If your controls are static, then ASP.NET makes things fairly easy via click and drag. However, key parts of this app are not static. Their display order changes and are mixed object "types" such that a "repeater" control won't work. MS in general makes things easy if you do it THEIR way, but convoluted if you wander off the beaten path. And, why the hell does it take 5 classes to issue an SQL query and loop through the results? Should only be 2 classes for common queries and 3 under special circumstances.
ColdFusionLanguage was easy to learn to use and remember data-wise because most queries were done via something similar to following construct: