What Is Microsoft .NET?
In this section, we answer the high-level question "What is .NET?" In brief, .NET represents Microsoft's vision of the future of applications in the Internet age. .NET provides enhanced interoperability features based upon open Internet standards.
The classic Windows desktop has been plagued by robustness issues. .NET represents a great improvement. For developers, .NET offers a new programming platform and superb tools.
XML plays a fundamental role in .NET. Enterprise servers (such as SQL 2000) expose .NET features through XML.
Microsoft .NET is a new platform at a higher level than the operating system. Three years in the making before public announcement, .NET is a major investment by Microsoft. .NET draws on many important ideas, including XML, the concepts underlying Java, and Microsoft's Component Object Model (COM). Microsoft .NET provides the following:
A robust runtime platform, the CLR
Multiple language development
An extensible programming model, the .NET Framework, which provides a 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
Microsoft and the Web
The World Wide Web has been a big challenge to Microsoft. It did not embrace it early. But the Web actually coexists quite well with Microsoft's traditional strength, the PC. Using the PC's browser application, a user can gain access to a whole world of information. The Web relies on standards such as HTML, HTTP, and XML, which are essential for communication among diverse users on a variety of computer systems and devices.
The Windows PC and the Internet, although complex, are quite standardized. However, a Tower of Babel exists with respect to the applications that try to build on top of them: multiple languages, databases, and development environments. The rapid introduction of new technologies has created a gap in the knowledge of workers who must build systems using these technologies. This provides an opening for Microsoft, and some of the most talked about parts of .NET are indeed directed toward the Internet.
.NET provides many features to greatly enhance our ability to program Web applications, but this topic is beyond the scope of this book. For more information, please consult the following two books in The Integrated .NET Series:
Application Development Using Visual Basic and .NET (Oberg, Thorsteinson, Wyatt)
Fundamentals of Web Applications Using .NET and XML (Bell, Feng, Soong, Zhang, Zhu)
Windows on the Desktop
Microsoft began with the desktop, and the company has achieved much. 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 there are also significant problems.
Problems with Windows
One of the most troublesome problems is the maintenance of applications on the Windows PC. Applications consist of many files, registry entries, shortcuts, and so on. Different applications can share certain DLLs. Installing a new application can overwrite a DLL that an existing application depends on, possibly breaking the older application (which is known as "DLL hell"). Removing an application is complex and often is imperfectly done. Over time, a PC can become less stable, and the cure eventually becomes 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, and so on. But the savings are reduced by the cost of maintenance.
A Robust Windows Environment
.NET has many features that will result in a much more robust Windows operating system. Applications no longer rely on storing extensive configuration data in the registry. In .NET, applications are self-describing, containing metadata within the program executable files themselves. Different versions of an application can be deployed side-by-side.
Applications run managed code. Managed code is not executed directly by the operating system, but rather by the special runtimethe CLR. The CLR can perform checks for type safety, such as for array out-of-bounds and memory overwrites. The CLR performs memory management, including automatic garbage collection, resulting in sharp reduction of memory leaks and similar problems.
Languages such as VB.NET and C# (pronounced "C sharp"), but not C++, can produce managed code that is verifiably secure. Managed code that is not verifiable can run if the security policy allows the code to ignore the verification process.
A New Programming Platform
.NET provides a new programming platform at a higher level than the operating system. This level of abstraction has many advantages:
Code can be validated to prevent unauthorized actions
It is much easier to program than the Win32 API or COM
All or parts of the platform can be implemented on many different kinds of computers (as has been done with Java)
All the languages use one class library
Languages can interoperate with each other
We outline the features of this new platform, the .NET Framework, in the next section.