.NET is the newest technology umbrella term
from Microsoft. There have been many
Microsoft marketing phrases like "ActiveX"
and "Windows DNA," and
one is justifiably prone to be
cautious of a new one. What they have
come up with this time looks like a
real revolution that will have profound
impact on many levels over the
coming years. So it is vitally important
for people in IT to come to understand
what .NET is. To come to such an understanding,
we need to look at several aspects of
this new technology.
What is Microsoft .NET?
by Robert J. Oberg
Let us begin with the desktop, examining what
Microsoft has achieved and what some of the
problems are. The modern Windows environment
has become ubiquitous. Countless applications
are available, and most computer users
are at least somewhat at home with Windows.
There is quite a rich user interface
experience, and applications can work
together. But maintaining a Windows PC
is a chore, because applications are
quite complex. They consist of many
files, registry entries, shortcuts, etc.
Different applications can share
certain DLLs, and installing a new
application can overwrite a DLL that an
existing application depends on, possibly
breaking an old application ("DLL hell").
Removing an application is complex and
is often imperfectly done. A PC can
gradually become less stable, with the
cure reformatting the hard disk and
starting from scratch.
tremendous economic benefit to using PCs,
because standard applications are
inexpensive and powerful, the hardware
is cheap, etc. But the savings are mitigated
by the cost of maintenance.
The old "glass house" model of a
central computer where all applications
are controlled has had an appeal, and
there has been a desire to move towards
"thin clients" of some sort.
But the much heralded "network PC"
never really caught on. There is too much
of value in standard PC applications;
users like the idea of their "own" PC, etc.
The personal computer is undoubtedly here to stay.
Another stream of evolution has been the Web,
which actually coexists very well with the PC.
Through a PC application, the browser, a
user gains access to a whole world of information.
The World Wide Web relies on standards such
as HTML, HTTP, and XML, which are essential
for communication among diverse users on a
wide variety of computer systems and devices.
Whereas the Windows PC, although complex,
is quite standardized, there is a
Tower of Babel in the Web on top of the
standard protocols: multiple languages,
databases, development environments,
devices. There is an explosion of
technology and a growing gap in
knowledge workers who can build the
needed systems using the new technologies.
Three years in the making before going
public, Microsoft .NET comprehensively
addresses issues of application development
and delivery in both the PC and Web domains.
It draws on some of the best ideas in the
industry, including Java, XML and Microsoft’s
own Component Object Model (COM).
Microsoft .NET provides:
- A robust runtime platform, the
Common Language Runtime
- Multiple language development
- An extensible programming model,
the .NET Framework, which provides
a very large class library of reusable
code available from multiple languages
- A networking infrastructure built on
top of Internet standards that supports
a high level of communication among
- A new mechanism of application delivery,
the Web Service, that supports the
concept of an application as a service
- Powerful development tools
Common Language Runtime
Somewhat analogous to the Java Virtual Machine (JVM),
the Common Language Runtime (CLR) provides a
layer of abstraction above the hardware and
operating system. The CLR provides many services
such as automatic memory management and
extensive security that both simplify
programming and make running programs
more robust. Development tools do not
target actual machine language but
Intermediate Language (IL), which is
translated at runtime by a just-in-time
compiler (JIT) to machine code. By
deferring the actual compilation
to run-time (performed only once,
and then machine code is cached),
the CLR can perform checks against
the actual executing environment,
providing greater robustness to
running programs. Programs running
against the CLR are easy to deploy,
with all required information located
in the IL executables. There is no
proliferation of information in the
registry, no DLL hell, and much
Multiple Language Development
As its name suggests, the CLR supports
many programming languages, one for
which a "managed code" compiler
has been implemented. Microsoft
itself has implemented compilers
for managed C++, Visual Basic,
Well over a dozen other languages
are being implemented by third parties,
among them COBOL by Fujitsu and
Perl by ActiveState. Think of all
the billions of lines of COBOL code
that can become usable within
the .NET environment.
Modern programming relies heavily on
reusable code provided in libraries.
Object-oriented languages facilitate
the creation of class libraries,
which are flexible, have a good
degree of abstraction, and are
extensible by adding new classes
and basing new classes on
existing ones, "inheriting"
existing functionality. The .NET Framework
provides over 2500 classes of reusable code,
which can be called by all languages.
The .NET Framework is extensible, and
new classes can inherit from existing
classes, even ones implemented in a
So many modern applications are distributed,
with clients connecting to servers that
may be at remote locations. Existing
protocols such as DCOM and CORBA are complex.
Microsoft and other vendors have introduced
a new protocol called
SOAP (Simple Object Access Protocol),
which uses XML to encode method
requests on objects, including data
that is passed. The great virtue of
SOAP is its simplicity, leading to
ease of implementation on multiple devices.
SOAP runs on top of standard Internet
protocols such as HTTP and SMTP, leading
to universal connectivity.
Originally the Web was a vast information
repository. Browsers would make request
for a page of existing information, and
a web server would deliver this information
as a static HTML pages. Then interactive
web applications were introduced,
allowing users to perform activities,
such as purchase products, online.
Reliance continued to be placed on HTML,
which combines information with the
details of how it is formatted for
viewing. XML provides a standard way
of transmitting data independent of
how it is to be formatted.
XML can thus provide ways for
companies to agree on standards
for documents such as purchase
orders and invoices, allowing for
automation of e-commerce among
cooperating companies (B-to-B).
But XML itself only describes data,
not operations to be performed on the data.
One of the most important aspects
of .NET is the introduction of Web Services,
which provide an API for applications
across the Internet, typically using
the SOAP protocol. The beautiful thing
about a Web Service is that from the
perspective of a programmer, a Web Service
is no different from any other kind of
service implemented by a class
in a .NET language. The programming
model is the same for calling a
function within an application,
in a separate component on the
same machine, or as a Web Service
on a different machine. This inherent
simplicity will make it very easy
for companies to create and host
applications. Thus a whole application
can be completely outsourced,
totally removing issues of development,
deployment and maintenance.
A practical key to success in software
is effective tools. Microsoft has long
had great tools, including Visual C++ and
Visual Basic. With .NET they have combined
their development tools into a single
integrated environment called
Visual Studio .NET, which provides a
very high degree of functionality
for creating applications in all the
languages supported by .NET.
the languages themselves, third parties
can provide extension to Visual Studio .NET,
creating a seamless development environment
for their language that interoperates with
the other .NET language. For example, you
can do multiple language debugging, etc.
The tool set includes extensive support for
building web applications and web services.
There is also great support for database
The importance of tools should not be
underestimated. The Ada project created
a very powerful language. Part of
the initial vision was to create
Ada Programming Support Environment (APSE).
But whereas great attention was paid
to specifying the language,
the APSE received much less attention,
and Ada never did develop the degree
of development environment like
Visual Studio or Smalltalk or some
of the Java environments. The
advantage of Visual Studio.NET is
that it is the standard, and so will
be highly tuned for productivity,
there will be much training available, etc.
This article has only touched on
some of the key facets of Microsoft’s
ambitious .NET project. After a
long period in beta, beginning with
a "preview" of the technology
in the summer of 2000, .NET was launched
in February, 2002. .NET is a major
initiative from Microsoft, and
its ramifications will affect all of us.
Copyright © 2004 • Object Innovations, Inc.