Course Catalog
Curriculum Guides
  .NET
  Java/J2EE
  XML
Downloads
Buy Courseware
Customization
News
Authors
Technical Library
FAQ
About Object Innovations
Opportunities
Contact Us
Home

 

 

   
www.objectinnovations.com
info@objectinnovations.com
877-558-7246 (toll free)  
781-466-8012  
What is Microsoft .NET?

by Robert J. Oberg
.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.

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.

There is 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 applications

  • 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 easier maintenance.


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, JavaScript and the new language C#. 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.


.NET Framework

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 different language.


Networking Infrastructure

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.


Web Services

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.


Development Tools

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.

As with 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 applications.

The importance of tools should not be underestimated. The Ada project created a very powerful language. Part of the initial vision was to create a standard 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.


Conclusion

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.