
What is .NET?
Way back when Windows was first introduced, it was not an
operating system. Instead, it was an operating environment that executed within
the context of MSDOS. Although MSDOS is long gone, we still live with those
influences to this day. Right now, .NET is in a similar state as early Windows.
It is not an operating system. It is an operating platform designed to produce
distributed applications. Currently, .NET operates on top of Windows but there’s
no technical reason why it couldn’t be ported into other operating systems.
At the time that Windows was designed, security,
distributed computing or internet communication was not a great concern. The
primary emphasis was on making a graphical UI and providing a bigger environment
in which programs could run. Since then, the computer community has evolved.
Some of the changes show great promise or otherwise satisfy some major need.
Others are fads that must be endured. The .NET world is much the same. Some of
its changes address past failings but others are poorly thought out or
inadequately implemented dogma.
.NET is a work in progress being implemented by a high
level design team that are either not greatly experienced with the Windows API
or have other reasons for deviating from what is otherwise a darned good feature
set. The Windows API has evolved and matured over many years. .NET is a more
complicated environment still in its younger days. There are things that exist
in the Windows API that have not been made available to the .NET world. For
example, in the API, a thread can be told to wait for an event. When the thread
stops waiting, the program can determine the event timed out, if the thread
stopped waiting because the event was satisfied and, if waiting for the first of
multiple events, which of the events released the thread or if the thread was
released because the event became invalid. In .NET, the designers of the
environment did not provide this level of information. A .NET program only knows
if a thread timed out waiting for events or not.
In the end, it doesn't matter what your opinions are about
.NET. It is what it is and there's not a lot we can do about it. Take the
performance hit, hold your nose and learn how to conform to the new order as
decreed by the Powers That Be. Move or be left behind.
There are two main components to .NET, CLR (Common Language
Runtime) and FCL (Framework Class Library).
The point of the CLR is to provide a language agnostic
execution environment for applications. This managed runtime environment
provides services to the executing code.
CLR is based on CLI (Common Language Infrastructure). CLI
is the formal definition of the services to be provided to the operating
environment and has been accepted as an ECMA standard. CLI compliant compilers
produce CIL (Common Intermediate Language). At execution time, the CIL is turned
into machine specific code.
One of .NET’s nice features is that the developmental model
lends itself to very different development targets. Skills acquired for a C#.NET
GUI application are likely to be applicable for an ADO.NET or ASP.NET project.
The FCL provides a rich set of types that can be used to
develop applications.
The two primary tools for application development are the
.NET SDK and Visual Studio .NET. The SDK is available for free as a download
from Microsoft and includes the .NET Framework, command line compiler and
debugging tools. The compiler support includes C#.NET, VB.NET, Jscript.NET and a
non-optimized C++.NET. A person who was seriously into self abuse could develop
real applications using nothing more than Notepad and the SDK although, frankly,
this isn’t the sort of person we or anyone we know would care to associate with.
The .NET world is slated to be the replacement for Visual C++, Visual Basic
and ADO. Along the way, they packed in a new way of building web services,
ASP.NET, too. If you've had any previous experience with using Interdev and ASP,
then you just won't believe how much nicer the ASP.NET world is.
ADO.NET - Sure, it's got four wheels and
the like, but this is not your father's ADO.
C# - C# is the new kid on the block. Here's
a list of notes, tips, tricks, gotcha's and sample code that I developed while
in the process of teaching myself this new language.


|