Quote:
|
Originally Posted by DevilsCharm
I've never understood what .NET is. Is there a .NET language, or is .NET just a set of languages? I'm guessing .NET contains many languages, because the description of this forum is "Popular .NET language", so I assume there must be more.
|
.NET itself is (like most marketing driven concepts) vaguely defined. For developers, though, it's pretty clear. You have:
a. The .NET Runtime which is the Common Language Runtime/CLR. This is basically the execution host for .NET code; think Java Virtual Machine. It provides the garbage collection, memory management, JIT compilation, etc.
b. The .NET type system, aka Common Type System. This are the fundamental types supported by the CLR. Think book, char, int, int64, function pointer (delegates), classes, enums, structs, etc.
c. Microsoft Intermediate Language, aka MSIL or just IL. This is the actual language that .NET compilers target. The CLR then JITs it into native machine code. IL is kind of similar to assembly, and would be no fun to code in. So, we have:
d. .NET languages. Basically any language that uses part or all of the CTS, compiles to MSIL, and is executed by the CLR. The most popular are the Visual Studio supported ones: VB.NET, C#, and C++/CLI. There are many others though, including IronPython, Ada, J#, F#, Ruby.NET, Perl.NET, even Microsoft's PowerShell I'd consider a .NET language, etc. Just about any mainstream or fringe language has a .NET port these days (not to say most of them are anything more than a proof of concept - I wouldn't know).
e. The .NET Base Class library, or BCL. These are the Microsoft provided base classes that do most of the "plumbing" for you. Everything from window controls, to SMTP, to HTTP, to sockets, to file IO, etc. has a (generally) clean and OOP interface. Though these are written in C#, due to the CTS any other language can consume them (this is also true for your own code).
f. ASP.NET is the subset and additional framework used to create web applications with .NET. It also does web services. It comes with it's specialized class libraries and framework ideas, but is generally consistent with the BCL.
g. Winforms is the subset and additional framework used to create standard Windows applications with .NET. Again, it has it's own set of libraries and framework.
h. WinFX/.NET 3.0 is the next release, including additional frameworks:
Windows Communications Foundation/WCF - aka Indigo - abstracts communication transports for distributed apps
Windows Presentation Foundation/WPF - aka Avalon - new winform concept using XAML (an XML language) with vector graphics, 3D animations, etc.
Windows Workflow Foundation/WF - a workflow framework that aims to run long running processes, with tracking, intervention, etc.
.NET, in marketing speak, is more about the systems and culture of .NET apps. Basically, interconnected systems using lots of web services, high levels of abstraction, and information sharing. Thankfully, Microsoft no longer feels the need to plug .NET at the end of every product though.