Who should read this article: Anyone interested in programming with Microsoft's
.NET Framework and separating the facts from the fiction. I assume very basic familiarity
with what the .NET Framework is, and go from there
By now you've certainly heard of Microsoft.NET, ASP.NET, and the .NET Framework. If not,
here's where you can read up:
Common Language Infrastructure (CLI) is essentially synonymous with .NET Framework. You
see the term ".NET Framework" more often, but I use "CLI" because it
emphasizes that it is a standard, not just another Microsoft proprietary technology, or
another Microsoft "standard" that only Microsoft implements.
Click
to read the PowerPoint presentation on the specification that
Microsoft and others submitted to
ECMA for standardization so far.
What the CLI is
The CLI is the framework for .NET applications. This includes anything written in ASP.NET
and anything written with WinForms. It includes the libraries and objects necessary for common
language types--that is, string, integer, array, and many more are all in the CLI, not in the
particular language (C#, VB.NET, COBOL.NET, etc.). It also includes a vast number of
higher-level libraries to handle network communication, regular expressions, XML, and of
course, web services. The CLI is a unified replacement for all the similar libraries that
exist today--the Visual Basic runtime, Microsoft Foundation Classes, Active Template Library,
Windows Foundation Classes, and Object Windows Library. This library is 100% object
oriented; types like char and int that have always been literals are treated as objects in the
CLI, which for example makes them available for inheritance just like any other object.
The CLI is language-independent. You can write code for the CLI in C#, C++, JScript.NET,
or VB.NET using Microsoft's compilers. External vendors such as Dyadic and Fujitsu are
providing compilers for languages supported by their tools (such as APL and COBOL,
respectively).
Programs written for the CLI are platform-independent. The .NET high-level development
languages all compile to MSIL (Microsoft Intermediate Language), which is a sort of high-level
assembly language, but includes no platform-specific instructions or information. Programs
written for the CLI are not based on the Win32 API, unlike programs written in older
versions of Microsoft Visual Basic, Visual C++, Dyalog APL/W, etc.
What the CLI is not
The CLI really isn't a "new version" of anything per se. It would be misleading
to think of it this way. It's a complete rewrite, not based on any previous Visual
Basic/Visual C++ libraries. They're not pitching out developers' existing code base, though;
there is an upgrade tool for Visual Basic projects, COM components can be called from .NET
applications, and "classic" ASP can run alongside ASP.NET on the same server and
even in the same application.
Contrary to a few news articles I've read, the CLI and .NET Framework is not the C#
language. It is a platform, not tied to any language. As I said, it does include the MSIL,
but developers do not write apps in MSIL. They write them in C#, VB.NET, APL.NET, Perl.NET,
etc. and then these applications are compiled to MSIL. The obvious similarities and
differences between this programming model and the Java programming model will be
discussed in another article.
The CLI does not require any particular programming/coding tool. Sun Microsystems
incorrectly claims that it does,
and that Microsoft "would force [developers to use] Visual Studio (or some other
tool that plugs into Visual Studio)". This is not at all true. Developers can write
.NET code in any text editor (think Notepad or emacs), then compile the code using
command-line compilers.
While programs written for the CLI are platform-independent, they are not yet
cross-platform in such a form that they can be used for professional-level development.
The CLI does not include ASP.NET (web application development), ADO.NET (database access),
or WinForms (Windows client development) which are part of the .NET Framework for
Windows, leaving business logic and console applications. Third parties must
develop these pieces for non-Windows platforms. There are projects
underway to implement the CLI on other platforms; when these other implementations are done,
your apps will be run optimized on those platforms without recompiling. The CLI is being
implemented on:
Note that for ASP.NET apps, you can still access those through any web browser on any
platform; it's the server that must be running Microsoft Windows.
Finally, here is a small sample of the high traffic, production sites that
are running ASP.NET now:
What this means
The CLI and the languages that target the CLI almost guarantee a revolution in Windows
development. ASP developers have widely and unanimously embraced it and are using it; indeed,
existing ASP technologies (2.0, 3.0) are already viewed as classic, and almost legacy. Every
popular Windows development language is supported, many for both Windows client and web
development. It has the potential for a big impact on other platforms as well.