As I write, .NET isn't scheduled to be formally released for at least several months. As with anything that's anticipated, the rumors abound. To put some of these to rest, I'd like to start off with what .NET is not.
What .NET Is Not
.NET first and foremost isn't the next Java killer. Although it's true that C#, formerly known as Cool, was begun immediately after the loss to Sun in the Java lawsuit, and although it's surprisingly similar to Java, C# by itself is a small part of the .NET story.
.NET is not the next Linux killer. It's not even an operating system, so this rumor holds no merit whatsoever. And for that matter, it poses no threat to Windows, because it requires Windows.
What .NET Is
.NET is the product of a lot of positive innovations from software developers. First and foremost, it's a new platform for distributed Web applications. Distributed applications are composed of disparate resources in multiple locations ”the database might be in New York, the inventory control software in Los Angeles, and the data entry software in Miami. It offers a new model for sharing components . Chapters 6 and 13 talk about server controls, and how to use the new Web Services paradigm for even greater component flexibility. The Common Language Runtime is at the heart of the .NET framework and consists of infrastructure and services to enable global-scale hosting. You can see what makes up the Common Language Runtime in Figure 1.2.
Figure 1.2. The Common Language Runtime is complex, but includes all the plumbing for your software.
Those certainly are admirable design goals, but you're a developer and need to know what kinds of tools you're getting. Visual Studio.NET is now a model for productivity. It enables developers to leverage their current skills, such as VB and C++ development. But it adds a host of RAD tools for Internet application development. What was a tool named Visual InterDev is now interwoven so thoroughly with Visual Studio that it would be impossible to separate it. Figure 1.3 shows the layers that compose the .NET framework.
Figure 1.3. The .NET framework has many layers that contribute to its success.
Extensible Markup Language (XML) is baked into the .NET framework and all the tools. ADO.NET supports XML natively; many files, such as the Config.web file and each Web Service's .disco file, are created with XML. Chapter 8 goes into XML and how to effectively use it in your ASP.NET applications.
Do you remember all the time you spent developing the plumbing ”the infrastructure ”on your last enterprise application? Well, kiss those days goodbye , because .NET provides the plumbing for almost every enterprise- related infrastructure task, such as each remote method call. And everything you develop on top of the built-in plumbing will be reusable because of the component-based architecture that's native to .NET applications.
Web Services will be categorized in a directory. Developer tools will have the capability to locate and use Web Services, and they will be defined in terms of the formats and ordering of messages. Web Services consumers will send and receive messages using XML. All these capabilities will be built using standard Web protocols. Chapter 14 goes into great detail about Web Services.
.NET Framework Drilldown
The Common Language Runtime design goals are to dramatically simplify application development, provide a robust and secure execution environment, support multiple programming languages, and simplify deployment and management.
.NET completely eliminates plumbing ”no registration, GUIDs, .IDL files, HRESULTs, IUnknown , AddRef / Release , CoCreateInstance , and so on. It is object-oriented to the core . Classes and inheritance are fully supported ”even across languages! It has seamless integration. Any .NET class can be used as a COM class with zero extra work, and COM classes can be imported as .NET classes.
Common Language Runtime
The Common Language Language Runtime is robust and secure because it includes the following features:
.NET offers a multi-language platform that gives you the freedom to choose a language. All features of a .NET platform are available to any .NET programming language, and application components can be written in multiple languages. It has highly leveraged tools. Debuggers, profilers, code coverage analyzers, and so on work for all languages.
It simplifies deployment and management. Applications are grouped into assemblies, which are the units of deployment, versioning, and security. Assemblies are like DLLs, but self-describing through a manifest. .NET has a system of zero-impact install. Applications and Language components can be shared or private, and applications enjoy side-by-side execution. Multiple versions of the same component can co-exist, even in the same process.
Framework Design Goals
The framework design goals are based on Web standards and practices. A goal of unifying application models pervades the architecture. Simplicity of use is another high-priority design goal. The class hierarchy can be seen in Figure 1.4, and this ultimately provides a framework to which programmers can turn for almost every need.
Figure 1.4. The .NET framework includes an extensive hierarchy of classes.
The .NET framework embraces and exploits current standards, such as HTML, XML, SOAP, XSLT, Xpath, and many others. .NET helps developers create Internet-ready distributed applications. The traditional tightly connected, stateful model just doesn't work on the Web. The .NET framework favors loosely connected, stateless Web Services, which affects everything such as base services, data access, UI, invocation/activation, and the programming model.
Simplicity to Develop in .NET
The simplicity that .NET provides is based on some careful design, including the following features: