CHAPTER 1 ■ THE BIG PICTURE
12
Not only does the CLR execute code, but it also provides a whole set of related services such as code
verification, optimization, and object management. The implications of the CLR are wide-ranging:
Deep language integration: VB and C#, like all .NET languages, compile to IL. In other
words, the CLR makes no distinction between different languages—in fact, it has no
way of knowing what language was used to create an executable. This is far more than
mere language compatibility; it’s language integration.
Side-by-side execution: The CLR also has the ability to load more than one version
of a component at a time. In other words, you can update a component many times,
and the correct version will be loaded and used for each application. As a side effect,
multiple versions of the .NET Framework can be installed, meaning that you’re able to
upgrade to new versions of ASP.NET without replacing the current version or needing
to rewrite your applications.
Fewer errors: Whole categories of errors are impossible with the CLR. For example,
the CLR prevents many memory mistakes that are possible with lower-level languages
such as C++.
Along with these truly revolutionary benefits, the CLR has some potential drawbacks. Here are two issues
that are sometimes raised by new developers but aren’t always answered:
Performance: A typical ASP.NET application is extremely fast, because ASP.NET code
is compiled to machine code before it’s executed. However, processor-crunching
algorithms still can’t match the blinding speed of well-written C++ code, because
the CLR imposes some additional overhead. Generally, this is a factor only in a few
performance-critical high-workload applications (such as real-time games). With
high-volume web applications, the potential bottlenecks are rarely processor-related
but are usually tied to the speed of an external resource such as a database or the web
server’s file system. With ASP.NET caching and some well-written database code, you
can ensure excellent performance for any web application.
Code transparency: IL is much easier to disassemble, meaning that if you distribute
a compiled application or component, other programmers may have an easier
time determining how your code works. This isn’t much of an issue for ASP.NET
applications, which aren’t distributed but are hosted on a secure web server.
The .NET Class Library
The .NET class library is a giant repository of classes that provide prefabricated functionality for everything
from reading an XML file to sending an e-mail message. If you’ve had any exposure to Java, you may already be
familiar with the idea of a class library. However, the .NET class library is more ambitious and comprehensive
than just about any other programming framework. Any .NET language can use the .NET class library’s features
by interacting with the right objects. This helps encourage consistency among different .NET languages and
removes the need to install numerous components on your computer or web server.
Some parts of the class library include features you’ll never need to use in web applications (such as the
classes used to create desktop applications with Windows interfaces). Other parts of the class library are targeted
directly at web development. Still more classes can be used in various programming scenarios and aren’t specific
to web or Windows development. These include the base set of classes that define common variable types and
the classes for data access, to name just a few. You’ll explore the .NET Framework throughout this book.
You can think of the class library as a well-stocked programmer’s toolkit. Microsoft’s philosophy is that it will
provide the tedious infrastructure so that application developers need only to write business-specific code. For
example, the .NET Framework deals with thorny issues such as database transactions and concurrency, making
www.it-ebooks.info