The .NET Vision
Add CommentIntroduction
In June 2000 Microsoft released the beta version of .NET Platform, related languages and APIs. This release is a beginning of a new horizon for programmers. But till today, I have seen that many people have failed to see the correct vision, "The .NET Vision"! .NET has been seen by many in the wrong light, the only perspective it has been seen in and publicized is in comparison to SUN Java. I don't deny the fact that this perspective is right to some extent, but the scope .NET is something beyond its competition with SUN. In this article I will try to show you my vision of .NET. Please note that this is my own vision and can be incorrect or wrong!
History
Let's start with some interesting short history of computing
products offered by Microsoft. Say around 20-30 years back (go down
your memory lane people) when computers were very new, huge rooms were
filled up to contain just one computer! The programming language was
purely machine language and the purpose of computers at that time
was to store data and do calculations.
Jumping a few years from there was the birth of the PC (Personal
Computer). Architects of the PC reduced the size of the computer to
such a extent that they dreamed of a PC on every desktop in the
future (which has become true today). Dos / Windows 3.0/3.11
programmed in C/C++ and similar languages changed the outlook of the
people towards computers! The Importance of the computer in commerce
started increasing. The Big IBM Main Frames helped rapid
industrialization and companies could now store millions of records
of sales and purchases in them.
In the 90's the birth of Windows 95 (later many other in the series
like Win98/ME etc) was a big welcome, as a big step towards
developing a user friendly operating system. The programming
languages used were C and C++. The Client - Server technology took
birth, intranets within companies became common and necessary. The
Client- Server technology though very ambitious and which is still
used, suffers from many defects the explanation of which is out of
the scope of this article. Meanwhile, VB (Visual Basic) was
developed by Microsoft to help develop RAD (Rapid Application
Development) GUI programs on the Windows Platform. Although VB was
successful in delivering its purpose, it never was able to deliver
anything more than that. That's why it was never called a full
fledged programming language and Microsoft has still not been able
to do much till VB6. Windows NT was also released to meet the
networking needs of small and medium scale businesses. In the
hardware field too we certainly have come a long long way. Today the
processing power of a PDA today is more than the total processing
power companies used to have few years back.
In between came the emergence of the Internet! Good or Bad the
reality is it has changed and affected every aspect of our lives.
Again rather than explaining the changes it has brought in our lives
which I guess you all know very well I shall proceed further with my
story.
Microsoft, has always been a bit late, but lucky as far as the
Internet world is considered. Netscape was the first to come out
with the revolutionary concept of the browser. Microsoft followed
its footsteps later with Internet Explorer, but over the years
Internet Explorer has certainly won the Browser war (your using a IE,
right??) !
One big revolution/evolution or what ever you call it, took place
with the release of Java by SUN Microsystems. It became the language
of the Internet! Applets ruled the web sites in creating dynamic
content, till the emergence of HTML/DHTML which performed the same function with
a few lines of scripts. Due to lack of
power and speed Java failed to take off as a programming language
for client desktops. With the failure in the Applets and Client
applications market Java shifted its focus to Server Side Computing.
This shift has made Java a power house in Server-Side/ Enterprise
Computing with no competition at all!
Reasons For Success of Java in Enterprise Computing:
1) Absence of any other languages for the Internet
Java was created specially for the Internet. It was modern and free
from backwards compatibility issues since it was created from
scratch. On the other hand Microsoft tried to promote VC++/VB as the
programming language for the internet. This was a big mistake. It
seems like since Microsoft was late into the Internet age, so it
tried to get into the market with its existing technologies. Java
was successful in helping simple programmers develop applications
quickly due to its simplicity and object oriented concepts. Pointers
in C++ and difficulty in interoperability between VC++/VB (both
Microsoft technologies) added to the woes of the programmers and the
notion became that its difficult to program using these languages
and only high IQ programmers could use them. One more factor was the
ease of coding, Java had base classes which directly enabled
interaction with various Internet standards. In C++ you had to write
lines and lines of code to perform simple tasks.
2) Absence of a scalable, reliable Platform/ Operating System
This is one of the most important point according to me which lead to the
success of Java. Most of the Microsoft technologies ran on proprietary Microsoft
Windows operating system. Microsoft got Windows NT 4 out to serve as the
operating system for hosting web applications. If anyone has used (or is still
using WinNT 4) will agree that WinNT 4 is not all that robust and scalable. The
success of the internet led to unpredictable increase in the traffic
a web site received. Under such circumstance WinNT 4 servers could
not bear the load, and have been a reason for embarrassment to many
companies.
Java being able to run on multiple platforms gained on this front.
Unix / Linux operating system have a record of being stable, robust
and scalable. The new combination of Unix/Linux servers with Java as
the programming languages became a hit during the Dot Com Boom
(remember it !!).
Without the support of any strong operating system Microsoft
Technologies failed to take off so well.
3) Low performance of the UI and Middle Ware layer
UI (User Interface)
Java developed JSP (Java Server Pages) and Servlets for creating
User Interfaces. Both these technologies allowed programmers to
program their web pages and give them a high level dynamics in
creating web sites. Also the code got actually a compiled so it give
better speed and performance. Microsoft developed ASP (Active Server
Pages) to act as the UI layer. ASP was script based, so naturally it
was slower then the compiled Servlets. In ASP the HTML code and
scripting was mingled up making it very confusing for the
programmer. Low Scalability of ASP too was a drawback. Due to the
availability of powerful tools and dependence on just the IIS server
(which comes free with the Win NT operating System), ASP gained a
significant acceptance in the small companies and web sites. But
overall it could never compete with power of JSP/Servlets.
Middle Layer
To act as the business logic layer Microsoft introduced COM and
later on DCOM. These technologies tried to solve the
interoperability issues between various languages like VC++/ VB etc.
Though COM came as a big relief to users of Microsoft technologies,
it was not free from its complexities. Programmers using COM would
agree that it was (and is) a tedious task creating working COM components.
Also there were some major languages differences like the integer in
C++ is 32bit while the same in VB is 16bit, which could not be
solved by COM. DCOM came in to provide COM support remotely, but
using its proprietary protocols it was a complete failure like RMI
in Java. Later on COM+ was introduced which tried to give a bit more
object oriented access, but it too suffered from many defects of
COM.
EJB by Java, was termed by Microsoft as a copy of Microsoft
Technology. But still it has been a success. It provides a scalable
and robust middle layer for Java technologies.
From the above discussion its clear that Microsoft, virtually had no products designed for the Internet age. This might have cost Microsoft dearly since they have lost out on the Dot Com boom completely. But that does not mean that Microsoft has been sleeping all this while, they know their weakness and are fighting back on all fronts.
Operating Systems (Platform)
Windows 2000 series of operating systems has been launched to serve
as strong, robust and scalable systems guaranteeing 99.999% of
uptime. They have proved their superiority and are gaining wide
acceptance in the server market. They have been successful in
keeping the user away from those dreaded "Blue Screen of
Death". Other capabilities like clustering, load balancing etc
are specifically designed according to the needs of the Internet.
The various other enterprise servers like BizTalk, Commerce Server, Site Server
etc have been launched to meet the platform needs of the
programmers. Further Windows XP, scheduled to be released
October 2001 promises the removal of all the dos/windows95 code in
order to provide better stability.
.NET
As I have mentioned before Microsoft did not have anything solid to
offer for programming on the Internet. .NET is Microsoft's ticket to
the Internet Age. Microsoft spending around 2 billion dollars and
more on .NET, has come up with a solution to provide the same power
and ability to users of all its technologies. If you glance at
Microsoft's history you will find that for every change in the
computing scenario they have released a new solution/product. But
since the past few years they have just been upgrading their
existing technologies to keep up with the change in demand. This
approach had to end somewhere and a new solution had to be released
since the older products cannot be stretched any more!
.NET is the much needed change, for users of Microsoft technologies.
The .NET development team has really dived deep into the problems
faced by today's programmers and tried to give solution to these in
the new platform. Some of these solutions might have shocked many
programmers like making Visual Basic.NET an Object Oriented
language. But in the long run these changes will be very beneficial,
and no language will receive secondary status.
Some of the outcomes of .NET are:
1) Support for Multiple Languages with equality status
One of the best features for programmers is that, to program on the
.NET platform they do not have to learn any new languages! They just
have to upgrade their existing languages. Since all the languages on
the .NET Platform compile into the same IL (Intermediate Language) code they have the same
speed and features. This makes the task for Project Planners very
easy, since now they have to no longer worry about which language to
choose for a particular project, any language they choose will allow
them to achieve their goal. Programmers too will be happy since many
times they are forced to code in a programming language they do not
like due to the project requirements. Now they code in any language
the like and taking advantage of full interoperability between
languages on the .NET platform they can easily integrate their code
with others.
2) Developed specially for the Internet Age
The .NET platform has been designed specifically for the internet
age. The ASP.NET and Web Services APIs will help programmers build
the applications of the future with minimum coding and better
performance. The .NET platform has been designed for the new service
base computing scenario where instead of using third party
components programmers will now use third party services and build
their applications. The Web Services API will also help businesses
collaborate better with each other in B2B activities.
3) Upgrade for Mainframes based architecture to .NET Platform
Many big companies still rely on the Mainframes based architecture.
Revival of the the Mainframes languages like COBOL, FORTRAN to
COBOL.NET and FORTRAN.NET will help mainframe based programs to be
easily upgraded with minimal changes. Also since the .NET Platform
has been submitted to the ECMA authorities, if Microsoft does not
provide a .NET Platform for the Mainframes some other vendor might due the
tremendous demand for such a platform.
4) Processor Independence
One more feature which is not being talked about much is Processor
Independence which .NET offers apart from Platform Independence. C++
/ VB code today compiles into platform and processor specific native
code. So if you are selling products you have to sell different
builds of the same product depending upon the process. Example:
There might be a separate build for Intel processors, AMD
processors, Cyrix processors etc. One common feature although among
all these processors is that they are all 32 bit processors.
Very shortly there is going to be the introduction of the 64 bit
processors by Intel and other companies (there are already a few
companies with 64 bit processors out!) and may be 128 bit processors
too. This makes the situation for native compilers worst! Now they
have to distribute separate builds not only for different companies
but also for different bits! So now you have to make different
builds for the 32 bit Intel, AMD and Cyrix processors as well as the
64bit and 128 bit builds for these processors. This is going to be a
real hell!
On the .NET platform although, you just create one build and the
.NET runtime takes care of executing your code on these different
processors! Different .NET JIT'ers will be designed for different
processors so that your code runs on all the processors, also these
JIT'ers will be optimized according to the processor so that it will
be able to make full use of all the features your processor.
5) Conformance to Standards and Standardization
In the past we have seen many technologies fail due to their dependence on
proprietary technologies. With .NET Microsoft has for the first time take a
totally different approach, instead of relying on proprietary technologies it
has relied on well established standards. XML the emerging standard for data
representation has been deeply embed into the .NET Framework. Providing rich
tools and classes to deal with XML data. Other standards like HTTP, SOAP, UDDI, TCP/IP have
also been used extensively in the .NET framework.
Also this time Microsoft has come first in the standardization race,
it has submitted part of the .NET Platform and the new C# language
to the ECMA authority for standardization.
Once these technologies get standardize there will be free
competition among compiler and tool developers producing better
products for the programmers. Borland has already announced its
getting ready its products for the .NET!
6) Build Better Applications
Automatic Garbage collection will relive the programmers the worry of managing
memory and at the same time it will produce more managed applications. Memory
leaks are one of the major bugs which surface in today's applications.
The enhanced Windows Forms API and ASP.NET API aim at providing rich and
easy to create user interfaces. Freedom from the windows registry
and xcopy deployment will also come as a blessing to desktop users.
Conclusion
I guess I have been able to convey my vision of .NET. The .NET
Platform clearly goes beyond being just a copy of SUN Java to being
the next step for users of Microsoft Technology. Its the first solid
step which will enable Microsoft dominate the Internet Age. Is that
ethical or not? That does not matter, what matters is that this time
Microsoft relying on standards and standardization which will allow
free entry and competition among language, compilers and tools
developers. Another important aspect of .NET is that it has revived
the dead and semi-dead languages which will help to create a fresh
demand for programmers expert in these languages.
My personal view is that with the existing Microsoft Technologies
there was a big full stop (.) to expansion, but (.)NET has opened a
new Network of development after the full stop and thus it has been
named .NET (Network after the full stop!).

