ENTERPRISE
COMPUTING WITH MICROSOFT'S .NET FRAMEWORK

 
 Home
 About Us
 Achu's Page
 Interests
 Friends
 Photos
 
Literature
 Technical
 Paintings

 
 
This article appeared on the IT Glimpse magazine (2000) published by Computer Science Students Association, Mahatma Gandhi University, Kerala. (Given here is the original article I wrote.)

When I sat down to compile an article for this magazine, my initial thoughts went with writing something purely non-technical. There are at least three distinct advantages for not writing technical material. First of them, you can write an article without double-checking its technical accuracy. Second, you are not worried about the breadth or width of the material presented. And third, it will have relevance maybe even after, say, ten years. Do not get me wrong: I enjoy writing technical material (in fact, that is part of my profession too), so, writing a technical article is just like being in the office for me!

.NET is a rapidly evolving platform, and most of its development are still in Beta form. The first stable bits of the .NET SDK were released at Professional Developers’ Conference (PDC) in July 2000. Visual Studio 7 (called Visual Studio.NET), (which, I should admit, is a software engineering marvel) has all the necessary ingredients to develop an application for the .NET platform. Considering the fact that at Microsoft things happen in the Internet time, by the time this article is published, someone should have deployed an e-Commerce site with a million hits per day using the C# (pronounced as C-Sharp)-Common Language Runtime (CLR)-ASP+ paradigm. Be forewarned though, that it could even be that what I picture here may not be the building blocks of the final release of the product.

Well, don’t you think my beating around the bush is enough? OK, I can sense it. In this short (and therefore, dangerous) article, I am going to tell you what .NET really means and what would be its impact on the software design in the enterprise development world, and how is it going to impact and possibly re-shape writing code for the future.

What’s .NET?

If you are studying for a Computer Science degree, and if you haven’t heard this question before, its time you did it. Bill Gates’ vision of Next Generation Windows Services (NGWS) is slowly transformed into the next version of COM+, i.e., COM+ 2.0, which is now being called as the .NET Framework. In simpler terms, .NET Framework is Microsoft's next generation platform for creating, deploying, and maintaining web services ranging from simple client applications to the most complex distributed architectures. .NET Framework is designed to make the Internet a true distributed computing platform, providing a framework that allows computers, devices, and services to collaborate.

.NET is a term that Microsoft is using to describe all of the new innovations that Microsoft engineers have been working on over the course of the last three or so years. It is a way to take the Windows DNA architecture and all the Microsoft technologies, and making them work closely in a way to make them Internet-enable in a very deep way. .NET describes that new world of the Internet-enabled web services that give you a new way to stitch applications together to make developers more productive, and helps to build an entirely new and different kind of application that’s pretty hard to build today. Sounds cool, doesn’t it?

C#: What the hell is that?

Many developers wish there was a language that was easy to write, read, and maintain like Visual Basic, but that still provided the power and flexibility of C++. C# is for those developers. Microsoft has built C# with type-safety, garbage collection, simplified type declarations, versioning and scalability support, and lots of other features that make developing solutions faster and easier, especially for COM+ and web services. It is like taking all the good stuff in Visual Basic and adding it to C++, while trimming off some of the more arcane C and C++ traditions. Going forward, C# is expected to be the best language from Microsoft for writing COM+ and Windows-based programs for enterprise computing. I know what you are thinking. Why wait, let’s discuss that right away!

What’s wrong with Java?

If you are a hardcore Java fan, stop reading this article now, and go support Vinod Kambly’s inclusion to the Indian Cricket team. I am not yet an evangelist for C# (Microsoft figured out that there are better people than me to do that!), but let’s face the realities.

Even though Java's design changed enterprise software development, it deviated significantly from C++ syntax, slowing Java's adoption by enterprise C++ developers who found some of Java's design choices difficult to swallow. In contrast, C# is C++ extended with Java-like features, including automatic memory and object lifetime management, easy access to external objects, and simplified object creation. Useful C++ concepts abandoned by Java, including overloaded operators and reference arguments, are maintained in C#. Pointers, banished from Java as the most dangerous of C++'s features, are not removed from C# but are caged: pointers may be used only in sections of code tagged as unsafe.

Although Java requires that C++ developers learn new ways of doing things, most of the transition from C++ to C# is leaving out the object and memory management code written into every C++ application. Allowing the use of pointers and references gives C# developers direct, simple access to facilities outside the .NET Framework, including 32-bit Windows DLLs. Unlike Java, C# keeps most of the quirky and powerful C++ features developers seem to like.

C# flew straight into the hands of the ECMA. So, customers and developers will see non-Microsoft C# tools and compilers as well as contributions to the language from other learned sources. This means that third parties creating C# tools won't have to license the language from Microsoft, so the cost of tools should remain low. In contrast, Sun Micro Systems withdrew Java from the standards track, so only Sun can evolve Java.

Need another big reason? Microsoft would not attempt to port any Windows C++ application of consequence to Java, but converting many of them, probably in stages, to C# seems to me as a definite possibility. The resulting application would gain C#'s stability and .NET's cross-language portability. Microsoft has invested considerable care in maintaining easy access to current Windows facilities, even those such as COM, that are supplanted by .NET.

Writing code for the future

Even in the Beta release of .NET SDK, you can write .NET applications in C++, C#, Visual Basic, JavaScript, and Visual FoxPro. They produce the intermediate byte code language called IL (intermediate language), and they share a framework-defined set of architecture-independent data types. Traditionally, developers choose a single language for each project so that code from different developers will interconnect; .NET makes this unnecessary. You can mix code from several languages with impunity because there are no VB, C#, or JavaScript objects; there are only .NET objects, and they're all connected. You can put C#, VB, C++, and JavaScript coders on one project and let the .NET layer ensure that all the pieces get along.

Doesn’t this remind you of the days you assembled your favorite electronic gadget and cried with joy because you thought allowing plugging in components of your choice was the biggest freedom you ever imagined?

Read my other published works:
Are You A Better Software Engineer?
Bill Gates has Become Rich, But My Windows Crashed Again!
The Good Doctor Prescribes You a Tablet
Try My Colored Glass

 

[ Home ] [ About Us ] [ Achu's Page ] [ Interests ] [ Friends ] [ Photos ] [ Literature ] [ Technical ] [ Paintings ]