Knol will be unavailable during scheduled maintenance starting at Mon, 09 Nov 2009 18:30:00 GMT. We expect the maintenance to be completed at Mon, 09 Nov 2009 20:00:00 GMT.
Version: Baidi441

.NET Explained

A short description of Microsoft's .NET technology

DotNet can be a confusing technology. This article attempts to draw out borders of each sub-technology included in the .NET technologies as well as define what .NET "is".


.NET is a conglomeration of many technologies.  It was created by Microsoft to provide a fully managed, secure, object oriented programming environment.  Microsoft spent about $1,000,000,000 to design the original 1.0 version in February 2002 (as of this writing, it's currently at version 3.5).  The technologies are: 

  • A very large, object oriented, library with well over 10,000 classes in its initial release.
  • 4 new languages (C#, VB.NET, J#, IL (Intermediate Language)).  There are also 3rd party languages available like Cobol.NET, RPG.NET, Python.NET, PHP.NET... The list keeps growing.
  • A managed run-time environment similar to a Java Virtual Machine.
  • An Integrated Development Environment (IDE), though some might argue that this is outside of .NET borders. 
 
Microsoft hired Anders Hejlsberg from competitor Borland.  Anders was instrumental in creating Borland Turbo Pascal in the 1980's and later Borland's Delphi and C++ Builder.  Delphi and C++ builder were fully object oriented development environments with a strong emphasis on visual programming.  These products raked Microsoft over the coals in the beauty of their design, speed of development, and speed of native code execution.  Microsoft's Visual Basic was very far behind in its abilities at all levels.  Microsoft hired Anders away from Borland and there he was key to designing the new .NET technologies.  It's not a coincidence that developing a C# or VB.NET application feels a LOT like writing a Delphi application.
 
Unless you're a developer, it's hard to understand the importance of the .NET technologies and also, unless you're a developer, you're not likely to get very excited about it.  But, for true geeks that have embraced the technology, it's almost as exciting as getting a guest spot on Star Trek Voyager alongside Jerry Ryan (who portrayed the bombshell blonde Borg female designated "7 of 9") as a love interest.
 
DotNet, as its name implies, embraces network technologies, which have been somewhat difficult to implement in other languages and technologies.  It also makes writing applications for the Microsoft Windows platform MUCH easier by abstracting (or hiding) the complex and difficult Win32 API (Application Programming Interface), which was essentially a collection of tens of thousands of global functions and DLLs and confusing data structures, which also required including many arbitrary header files in your code.
 
Safety is a key feature of .NET.  In natively compiled (unmanaged) code, it's easy to make common programming mistakes like memory leaks (not release memory that you're finished using), buffer overruns (by reading or writing beyond the end of a data structure and corrupting code or data).  A developer using an unmanaged technology (like C/C++, VB6 (and earlier), Delphi, etc...) has to program with caution and use tools like Lint to analyze their code and run-time analysis tools to examine how memory is used while the application is running.  Even with these tools, it's difficult to catch all such problems.  .NET minimizes (or even eliminates) these problems by not allowing direct access to the computer's memory.  Instead, data structures are in the form of objects which are protected in a way.  Since the developer does not access their contents with memory addresses, but instead with "references", the references themselves are objects and "know" where an object resides in memory AND how much space it takes up and will NOT allow the application to access memory outside of those bounds.
 
Security is another key feature of .NET technology.  Microsoft went through great lengths to protect a host system running a .NET application.  Among their security tactics are code security:  In other words, the user of the computer can dictate how much of that computer system any particular .NET application (known as an "assembly") can access.  For example, any .NET application can be denied write access to a computer's hard drive, or to a particular network share or even be denied access to the LAN at all, or can be forced to only communicate with a particular web site.  EVERYTHING in the .NET library is security checked at the time of execution.
 
Standards:  Microsoft has had a reputation for releasing proprietary technologies.  Microsoft has officially handed over the C# language to the ECMA standards committee.  This means that Microsoft does not "own" the C# language.  As a result, there are several products available today they provide C# development, including Borland's C# Builder, The Mono Project's implementation of .NET and a few others.
 
Speaking of Mono, a discussion of .NET would be incomplete without mentioning the mono project.  Microsoft developed .NET on the Microsoft Windows platform only.  A group of dedicated and driven developers decided they'd like to have that technology on Linux and on the Mac as well, so they joined togehter and created an open source project called Mono.  Mono is a complete rewrite of virtually the entire .NET base class library as well as an integrated development environment, much like Visual Studio, and ASP.NET engine for Apache web servers, as well as a huge list of everything .Net.  All of this is up and running on Linux and on the Mac.  They have done a remarkably outstanding job.  As a result, you can now create a .NET assembly (an EXE file or a DLL file) with Microsoft Visual Studio on a Windows platform, then copy the file to a Linux box and it will run!  Conversely, you can write a .NET assembly using the mono IDE on Linux and it'll run on Linux, Windows, and Mac.  .NET binaries are not dependant on any operating system... and for that matter, they're not dependant on the hardware.  A single EXE can run on any hardware platform and operating system that hosts a .NET managed environment.  This make .NET very portable.
 
Java:  .NET is not Java, but it is very similar.  A lot of people claim that .NET is Microsoft's answer to Java.  From a high-level technology perspective, it is indeed, very, very similar.  Microsoft even provides a language called J#, which is basically Java, but it runs on the .NET platform, not in a Java Virtual Machine.  Its purpose was to provide an entry into the .NET world for prior Java developers.

Comments

Correction

At first - you forgot about C++ with managed extensions.
At second - I don`t understand, how IDE (exaggerate: tool for development) can be part of Framework.

Last edited Nov 3, 2008 10:29 AM
Report abusive comment

Possible typo in the 3rd to last paragraph

It doesn't make sense to me the way it is written. Did you mean to write '... does <b>not<b> "own" the C# language.'?

Last edited Nov 24, 2008 2:42 PM
Report abusive comment
Article rating:
Your rating:

Reviews

    Knol translations

    Categories

    Based on community consensus.

    Activity for this knol

    This week:

    37pageviews

    Totals:

    2243pageviews
    4comments