Overview of the .NET
Framework
The .NET Framework is an integral Windows component that
supports building and running the next generation of applications and XML Web
services. The .NET Framework is designed to fulfill the following objectives:
·
To
provide a consistent object-oriented programming environment whether object
code is stored and executed locally, executed locally but Internet-distributed,
or executed remotely.
·
To
provide a code-execution environment that minimizes software deployment and
versioning conflicts.
·
To
provide a code-execution environment that promotes safe execution of code,
including code created by an unknown or semi-trusted third party.
·
To
provide a code-execution environment that eliminates the performance problems
of scripted or interpreted environments.
·
To
make the developer experience consistent across widely varying types of
applications, such as Windows-based applications and Web-based applications.
·
To
build all communication on industry standards to ensure that code based on the
.NET Framework can integrate with any other code.
The .NET Framework has two main
components: the common language runtime and the .NET Framework class library.
The common language runtime is the foundation of the .NET Framework. You can
think of the runtime as an agent that manages code at execution time, providing
core services such as memory management, thread management, and remoting, while
also enforcing strict type safety and other forms of code accuracy that promote
security and robustness. In fact, the concept of code management is a
fundamental principle of the runtime. Code that targets the runtime is known as
managed code, while code that does not target the runtime is known as unmanaged
code. The class library, the other main component of the .NET Framework, is a
comprehensive, object-oriented collection of reusable types that you can use to
develop applications ranging from traditional command-line or graphical user
interface (GUI) applications to applications based on the latest innovations
provided by ASP.NET, such as Web Forms and XML Web services.
The .NET Framework can be hosted by
unmanaged components that load the common language runtime into their processes
and initiate the execution of managed code, thereby creating a software environment
that can exploit both managed and unmanaged features. The .NET Framework not
only provides several runtime hosts, but also supports the development of
third-party runtime hosts.
For example, ASP.NET hosts the
runtime to provide a scalable, server-side environment for managed code.
ASP.NET works directly with the runtime to enable ASP.NET applications and XML
Web services, both of which are discussed later in this topic.
Internet Explorer is an example of
an unmanaged application that hosts the runtime (in the form of a MIME type
extension). Using Internet Explorer to host the runtime enables you to embed
managed components or Windows Forms controls in HTML documents. Hosting the
runtime in this way makes managed mobile code (similar to Microsoft® ActiveX®
controls) possible, but with significant improvements that only managed code
can offer, such as semi-trusted execution and isolated file storage.
The following illustration shows the
relationship of the common language runtime and the class library to your
applications and to the overall system. The illustration also shows how managed
code operates within a larger architecture.
.NET Framework in context
The following sections describe the
main components and features of the .NET Framework in greater detail.
Features of the Common Language
Runtime
The common language runtime manages
memory, thread execution, code execution, code safety verification,
compilation, and other system services. These features are intrinsic to the
managed code that runs on the common language runtime.
With regards to security, managed
components are awarded varying degrees of trust, depending on a number of
factors that include their origin (such as the Internet, enterprise network, or
local computer). This means that a managed component might or might not be able
to perform file-access operations, registry-access operations, or other
sensitive functions, even if it is being used in the same active application.
The runtime enforces code access
security. For example, users can trust that an executable embedded in a Web
page can play an animation on screen or sing a song, but cannot access their
personal data, file system, or network. The security features of the runtime
thus enable legitimate Internet-deployed software to be exceptionally feature
rich.
The runtime also enforces code
robustness by implementing a strict type-and-code-verification infrastructure
called the common type system (CTS). The CTS ensures that all managed code is
self-describing. The various Microsoft and third-party language compilers
generate managed code that conforms to the CTS. This means that managed code
can consume other managed types and instances, while strictly enforcing type
fidelity and type safety.
In addition, the managed environment
of the runtime eliminates many common software issues. For example, the runtime
automatically handles object layout and manages references to objects,
releasing them when they are no longer being used. This automatic memory
management resolves the two most common application errors, memory leaks and
invalid memory references.
The runtime also accelerates
developer productivity. For example, programmers can write applications in
their development language of choice, yet take full advantage of the runtime,
the class library, and components written in other languages by other
developers. Any compiler vendor who chooses to target the runtime can do so.
Language compilers that target the .NET Framework make the features of the .NET
Framework available to existing code written in that language, greatly easing
the migration process for existing applications.
While the runtime is designed for
the software of the future, it also supports software of today and yesterday.
Interoperability between managed and unmanaged code enables developers to
continue to use necessary COM components and DLLs.
The runtime is designed to enhance
performance. Although the common language runtime provides many standard
runtime services, managed code is never interpreted. A feature called just-in-time
(JIT) compiling enables all managed code to run in the native machine language
of the system on which it is executing. Meanwhile, the memory manager removes
the possibilities of fragmented memory and increases memory
locality-of-reference to further increase performance.
Finally, the runtime can be hosted
by high-performance, server-side applications, such as Microsoft® SQL Server™
and Internet Information Services (IIS). This infrastructure enables you to use
managed code to write your business logic, while still enjoying the superior
performance of the industry's best enterprise servers that support runtime
hosting.
.NET Framework Class Library
The .NET Framework class library is
a collection of reusable types that tightly integrate with the common language
runtime. The class library is object oriented, providing types from which your
own managed code can derive functionality. This not only makes the .NET
Framework types easy to use, but also reduces the time associated with learning
new features of the .NET Framework. In addition, third-party components can
integrate seamlessly with classes in the .NET Framework.
For example, the .NET Framework
collection classes implement a set of interfaces that you can use to develop
your own collection classes. Your collection classes will blend seamlessly with
the classes in the .NET Framework.
As you would expect from an
object-oriented class library, the .NET Framework types enable you to
accomplish a range of common programming tasks, including tasks such as string
management, data collection, database connectivity, and file access. In
addition to these common tasks, the class library includes types that support a
variety of specialized development scenarios. For example, you can use the .NET
Framework to develop the following types of applications and services:
·
Console
applications.
·
Windows
GUI applications (Windows Forms).
·
ASP.NET
applications.
·
XML
Web services.
·
Windows
services.
For example, the Windows Forms
classes are a comprehensive set of reusable types that vastly simplify Windows
GUI development. If you write an ASP.NET Web Form application, you can use the
Web Forms classes.
Client Application Development
Client applications are the closest
to a traditional style of application in Windows-based programming. These are
the types of applications that display windows or forms on the desktop,
enabling a user to perform a task. Client applications include applications
such as word processors and spreadsheets, as well as custom business
applications such as data-entry tools, reporting tools, and so on. Client
applications usually employ windows, menus, buttons, and other GUI elements,
and they likely access local resources such as the file system and peripherals
such as printers.
Another kind of client application
is the traditional ActiveX control (now replaced by the managed Windows Forms
control) deployed over the Internet as a Web page. This application is much
like other client applications: it is executed natively, has access to local
resources, and includes graphical elements.
In the past, developers created such
applications using C/C++ in conjunction with the Microsoft Foundation Classes
(MFC) or with a rapid application development (RAD) environment such as
Microsoft® Visual Basic®. The .NET Framework incorporates aspects of these
existing products into a single, consistent development environment that
drastically simplifies the development of client applications.
The Windows Forms classes contained
in the .NET Framework are designed to be used for GUI development. You can
easily create command windows, buttons, menus, toolbars, and other screen
elements with the flexibility necessary to accommodate shifting business needs.
For example, the .NET Framework
provides simple properties to adjust visual attributes associated with forms.
In some cases the underlying operating system does not support changing these
attributes directly, and in these cases the .NET Framework automatically
recreates the forms. This is one of many ways in which the .NET Framework integrates
the developer interface, making coding simpler and more consistent.
Unlike ActiveX controls, Windows
Forms controls have semi-trusted access to a user's computer. This means that
binary or natively executing code can access some of the resources on the
user's system (such as GUI elements and limited file access) without being able
to access or compromise other resources. Because of code access security, many
applications that once needed to be installed on a user's system can now be
deployed through the Web. Your applications can implement the features of a
local application while being deployed like a Web page.
Server Application Development
Server-side applications in the
managed world are implemented through runtime hosts. Unmanaged applications
host the common language runtime, which allows your custom managed code to
control the behavior of the server. This model provides you with all the
features of the common language runtime and class library while gaining the
performance and scalability of the host server.
The following illustration shows a
basic network schema with managed code running in different server
environments. Servers such as IIS and SQL Server can perform standard
operations while your application logic executes through the managed code.
Server-side managed code
ASP.NET is the hosting environment
that enables developers to use the .NET Framework to target Web-based
applications. However, ASP.NET is more than just a runtime host; it is a
complete architecture for developing Web sites and Internet-distributed objects
using managed code. Both Web Forms and XML Web services use IIS and ASP.NET as
the publishing mechanism for applications, and both have a collection of
supporting classes in the .NET Framework.
XML Web services, an important
evolution in Web-based technology, are distributed, server-side application
components similar to common Web sites. However, unlike Web-based applications,
XML Web services components have no UI and are not targeted for browsers such
as Internet Explorer and Netscape Navigator. Instead, XML Web services consist
of reusable software components designed to be consumed by other applications,
such as traditional client applications, Web-based applications, or even other
XML Web services. As a result, XML Web services technology is rapidly moving
application development and deployment into the highly distributed environment
of the Internet.
If you have used earlier versions of
ASP technology, you will immediately notice the improvements that ASP.NET and
Web Forms offer. For example, you can develop Web Forms pages in any language
that supports the .NET Framework. In addition, your code no longer needs to
share the same file with your HTTP text (although it can continue to do so if
you prefer). Web Forms pages execute in native machine language because, like
any other managed application, they take full advantage of the runtime. In
contrast, unmanaged ASP pages are always scripted and interpreted. ASP.NET
pages are faster, more functional, and easier to develop than unmanaged ASP
pages because they interact with the runtime like any managed application.
The .NET Framework also provides a
collection of classes and tools to aid in development and consumption of XML
Web services applications. XML Web services are built on standards such as SOAP
(a remote procedure-call protocol), XML (an extensible data format), and WSDL (
the Web Services Description Language). The .NET Framework is built on these
standards to promote interoperability with non-Microsoft solutions.
For example, the Web Services
Description Language tool included with the .NET Framework SDK can query an XML
Web service published on the Web, parse its WSDL description, and produce C# or
Visual Basic source code that your application can use to become a client of
the XML Web service. The source code can create classes derived from classes in
the class library that handle all the underlying communication using SOAP and
XML parsing. Although you can use the class library to consume XML Web services
directly, the Web Services Description Language tool and the other tools
contained in the SDK facilitate your development efforts with the .NET
Framework.
If you develop and publish your own
XML Web service, the .NET Framework provides a set of classes that conform to
all the underlying communication standards, such as SOAP, WSDL, and XML. Using
those classes enables you to focus on the logic of your service, without
concerning yourself with the communications infrastructure required by
distributed software development.
Finally, like Web Forms pages in the
managed environment, your XML Web service will run with the speed of native
machine language using the scalable communication of IIS.

No comments:
Post a Comment