Essential .NET, Volume I: The Common Language Runtime

Paperback (Print)
Used and New from Other Sellers
Used and New from Other Sellers
from $1.99
Usually ships in 1-2 business days
(Save 96%)
Other sellers (Paperback)
  • All (23) from $1.99   
  • New (5) from $37.43   
  • Used (18) from $1.99   

Overview

"Don taught me stuff I didn't know about my own product! And I bet he'll teach you something, too."
—From the Foreword by James Miller, Lead Program Manager, Common Language Runtime, Microsoft Corporation

Essential .NET, Volume 1 , provides everything developers need to take full advantage of the power of Microsoft .NET. This book describes, in depth, the glue of the .NET Framework: the Common Language Runtime (CLR). Box and Sells explain the inner workings of the CLR—the rationale behind its design, the problems it solves, and the role of type in CLR programming—and show readers how to build better applications using the .NET Framework while gaining a more complete understanding of how the CLR works.

The book is packed with the practical detail and expert advice only Don Box can provide. Topics covered include:

  • CLR's evolution
  • Assemblies in the .NET Framework
  • The CLR type system
  • Programming with type
  • Objects and values
  • Methods
  • Explicit method invocation
  • Application domains
  • Security
  • Interoperability

Essential .NET, Volume 1 , is an authoritative guide to the Microsoft .NET Common Language Runtime.

Books in the Microsoft .NET Development Series are written and reviewed by the principal authorities and pioneering developers of the Microsoft .NET technologies, including the Microsoft .NET development team and DevelopMentor. Books in the Microsoft .NET Development Series focus on the design, architecture, and implementation of the Microsoft .NET initiative to empower developers and students everywhere with the knowledge they need to thrive in the Microsoft .NET revolution.

0201734117B10042002

Read More Show Less

Editorial Reviews

From Barnes & Noble
The Barnes & Noble Review
If you want the deepest possible understanding of .NET’s Common Language Runtime, you’ll want to hear what Don Box has to say. Through the '90s, Box was arguably the world’s most influential writer on COM, and he personally coauthored the SOAP 1.1 specification. His understanding of advanced software integration issues is legendary. And now, with Chris Sells, he’s written the definitive guide to the CLR.

Box and Sells begin by reviewing COM’s key limitations, especially in extensibility and in the exchange of COM contract descriptions. The CLR, like COM, focuses on contracts -- but unlike COM, it provides a fully specified metadata format for describing them. Also unlike COM, CLR contracts describe logical type structure, not physical in-memory representations. That gives CLR powerful flexibility, while at the same time overcoming key problems that plague COM. These changes lead to a programming model that’s independent of task or language -- and hence, C#, VB.NET, and many other languages can be mapped to the CLR.

With this context, Box and Sells offer thorough explanations of CLR modules, assemblies, and the loader, the Common Type System, instances, AppDomains, and methods (including elements of the CLR’s method invocation architecture that draw on leading-edge Aspect-Oriented Programming ideas). The book concludes with an expert introduction to the CLR’s new secure execution model, and to the ways CLR-based programs relate to the world around them.

This isn’t beginner’s material, but if you’re already reasonably familiar with .NET, it’ll give you powerful insights for building better software. Bill Camarda

Bill Camarda is a consultant, writer, and web/multimedia content developer. His 15 books include Special Edition Using Word 2000 and Upgrading & Fixing Networks For Dummies®, Second Edition.

Read More Show Less

Product Details

  • ISBN-13: 9780201734119
  • Publisher: Addison-Wesley
  • Publication date: 11/4/2002
  • Series: Microsoft .NET Development Series
  • Edition description: New Edition
  • Pages: 405
  • Product dimensions: 7.32 (w) x 9.05 (h) x 0.94 (d)

Meet the Author

Don Box is a leading educator, recognized authority on the Component Object Model (COM), coauthor of the Simple Object Access Protocol (SOAP) specification, and coiner of the term "COM is Love." He recently joined Microsoft as an architect in the Microsoft® .NET Developer and Platform Evangelism Group.

Earlier in his career, Box cofounded DevelopMentor Inc., a component software think tank aimed at educating developers on the use of the COM, Java, and XML. A popular public speaker, Box is known for engaging audiences around the world, combining deep technical insight with often outrageous stunts.

0201734117AB06132002

Read More Show Less

Read an Excerpt

What Happened?

In 1998, Microsoft held a Professional Developer's Conference (PDC) in San Diego. COM luminary Charlie Kindel stood up in a general session and proclaimed "no more GUIDs—no more HRESULTs—no more IUnknown." He and Mary Kirtland proceeded to show the basic architecture of the CLR, then known as the COM+ Runtime. Later in the session, Nat Brown and David Stutz stood up and demonstrated cross-language inheritance using Visual Basic and Java. Attendees actually went home with CDs containing primitive versions of compilers that could reproduce this very odd demonstration. It is now February 2002, and this technology has finally shipped in release form.

There are two days that will forever demarcate the evolution of the Microsoft platform. On July 27, 1993, Windows NT 3.1 was released, marking the end of the DOS era. On February 13, 2002, the Common Language Runtime (CLR) was released as part of the .NET Framework, marking the end of the COM era.

The .NET Framework is a platform for software integration. Fundamentally, the .NET Framework provides two core integration technologies. The Common Language Runtime (CLR) is used to integrate software within a single operating system process.

The CLR and

Both the CLR and

Equally important, ubiquitous metadata informs the tools and underlying platform of what the component developers had in mind when they were authoring the code.

This metadata-directed "clairvoyance" allows the platform to provide richer support than would be possible if the component were completely opaque. For example, various aspects of object-to-

The second key idea that permeates CLR and

Because contracts are virtualized, this specific detail of the contract can be bound at runtime based on post-development characteristics.

Because this volume focuses exclusively on the CLR, a working definition of the CLR is in order. The CLR is fundamentally a loader that brings your components to life inside an operating system process. The CLR replaces COM's CoCreateInstance and Win32's LoadLibrary as the primary loader for code.

The CLR loader provides a number of services beyond what COM and Win32 offered before it. The CLR loader is version-aware and provides flexible configuration of version policies and code repositories. The CLR loader is security-aware and is a critical part of the enforcement of security policy. The CLR loader is type-aware and provides a rich runtime environment for the explicit management and creation of types independent of programming language. In short, the CLR loader is an advanced component technology that supplants COM as Microsoft's primary in-memory integration strategy.

The CLR is made accessible through compilers that emit the CLR's new file format. Program language wonks view the CLR as providing key building blocks for compiler writers, building blocks that reduce the complexity of compiler implementations. In contrast, systems wonks often view programming languages as facades or "skins" over the underlying constructs of the CLR. The author falls firmly into the latter camp. However, programming languages are a necessary lens through which even low-level systems plumbers view the CLR. To that end, examples in this book are written in various programming languages because binary dumps of metadata and code are arcane to the point of being incomprehensible.

About This Book

I try very hard to make a book readable and accessible to a wide array of readers, but invariably, my terse writing style tends to make a "Don Box book" a challenge to get through. Experience has shown me that I am horrible at writing tutorials or primers. What I can do reasonably well is convey how I see the world in book form. To that end, it is not uncommon to need to read a Don Box book more than once to get the intended benefits.

As the previous paragraph implied, this book is by no means a tutorial. If you try to learn .NET Framework programming from a standing start using this book, the results may not be pretty. For readers looking for a good tutorial on .NET programming techniques or the C# language, please read Stan Lippman's C# Primer (Addison-Wesley, 2002) or Jeffery Richter's Applied .NET Framework Programming (Microsoft Press, 2002) before taking on this book.

This book is divided into two volumes. Volume 1 focuses on the Common Language Runtime. Volume 2 will focus ST3on

This book was written against Version 1 of the CLR. Some of the internal techniques used by the CLR may evolve over time and may in fact change radically. In particular, the details of virtual method dispatch are very subject to change. They are included in this book largely as an homage to COM developers wondering where the vptr went. That stated, the basic concepts that are the focus of this book are likely to remain stable for years to come.

Throughout the book, I use assertions in code to reinforce the expected state of a program. In the CLR, assertions are performed using System. Diagnostics.Debug.Assert, which accepts a Boolean expression as its argument. If the expression evaluates to false, then the assertion has failed and the program will halt with a distinguished error message. For readability, all code in this book uses the short form, Debug.Assert, which assumes that the System.Diagnostics namespace prefix has been imported.

My perspective on .NET is fairly agnostic with respect to language. In my daily life, I use C# for about 50 percent of my CLR-based programming. I use C++ for about 40 percent, and I resort to ILASM for the remaining 10 percent. That stated, most programming examples in this book use C# if for no other reason than it is often the most concise syntax for representing a particular concept or technique. Although some chapters may seem language-focused, none of them really is. The vast majority of this book could have used C++, but, given the tremendous popularity of C#, I elected to use C# to make this book as accessible as possible.

This book focuses on the Common Language Runtime and is divided into 10 chapters:

  • Chapter 1—The CLR as a Better COM: This chapter frames the discussion of the CLR as a replacement for the Component Object Model (COM) by looking at the issues that faced COM developers and explaining how the CLR addresses those issues through virtualization and ubiquitous, extensible metadata.
  • Sum Chapter 2—Components: Ultimately, the CLR is a replacement for the OS and COM loaders. This chapter looks at how code is packaged and how code is loaded, both of which are done significantly differently than in the Win32 and COM worlds.
  • Chapter 3—Type Basics: Components are containers for the code and metadata that make up type definitions. This chapter focuses on the CLR's common type system (CTS), including what constitutes a type and how types relate. This is the first chapter that contains significant chunks of source code.
  • Chapter 4—Programming with Type: The CLR makes type a first-class concept in the programming model. This chapter is dedicated to the explicit use of type in CLR programs, with an emphasis on the role of metadata and runtime type information.
  • Chapter 5—Instances: The CLR programming model is based on types, objects, and values. Chapter 4 focused on type; this chapter focuses on objects and values. Specifically, this chapter outlines the difference between these two instancing models, including how values and objects differ with respect to memory management.
  • Chapter 6—Methods: All component interaction occurs through method invocation. The CLR provides a broad spectrum of techniques for making method invocation an explicit act. This chapter looks at those techniques, starting with method initialization through JIT compilation and ending with method termination via strongly typed exceptions.
  • Chapter 7—Advanced Methods: The CLR provides a rich architecture for intercepting method calls. This chapter dissects the CLR's interception facilities and its support for aspect-oriented programming. These facilities are one of the more innovative aspects of the CLR.
  • Chapter 8—Domains: The CLR uses AppDomains rather than OS processes to scope the execution of code. To that end, this chapter looks at the role of AppDomains both as a replacement for the underlying OS's process model as well as an AppDomain's interactions between the assembly resolver or loader. Readers with Java roots will find the closest analog to a Java class loader here.
  • Chapter 9—Security: One of the primary benefits of the CLR is that it provides a secure execution environment. This chapter looks at how the CLR loader supports the granting of privileges to code and how those privileges are enforced.
  • Chapter 10—CLR Externals: The first nine chapters of this book are focused on what it means to write programs to the CLR's programming model. This concluding chapter looks at how one steps outside of that programming model to deal with the world outside of the CLR.
Read More Show Less

Table of Contents

(NOTE: Each chapter concludes with Where Are We?)

List of Figures.

List of Tables.

Foreword.

Preface.

1. The CLR as a Better COM.

COM Revisited.

The Common Language Runtime.

The Evolution of the Programming Model.

2. Components.

Modules Defined.

Assemblies Defined.

Assembly Names.

Public Keys and Assemblies.

The CLR Loader.

Resolving Names to Locations.

Versioning Hazards.

3. Type Basics.

Type Fundamentals.

Types and Initialization.

Types and Interfaces.

Types and Base Types.

4. Programming with Type.

Types at Runtime.

Programming with Metadata.

Special Methods.

Metadata and Extensibility.

5. Instances.

Objects and Values Compared.

Variables, Parameters, and Fields.

Equivalence Versus Identity.

Cloning.

Boxing.

Arrays.

Object Life Cycle.

Finalization.

6. Methods.

Methods and JIT Compilation.

Method Invocation and Type.

Interfaces, Virtual Methods, and Abstract Methods.

Explicit Method Invocation.

Indirect Method Invocation and Delegates.

Asynchronous Method Invocation.

Method Termination.

7. Advanced Methods.

Motivation.

Messages as Method Calls.

Stack and Message Transitions.

Proxiable Types.

Message Processing (Revisited).

Objects and Context.

Contexts and Interception.

8. Domains.

Execution Scope and the CLR.

Programming with AppDomains.

AppDomain Events.

AppDomains and the Assembly Resolver.

AppDomains and Code Management.

AppDomains and Objects (Revisited).

9. Security.

Components and Security.

Evidence.

Policy.

Permissions.

Enforcement.

10. CLR Externals.

Memory.

Modes of Execution.

Unmanaged Modules.

Loading the CLR.

The CLR as a COM Component.

Glossary.

Index. 0201734117T09272002

Read More Show Less

Preface

What Happened?

In 1998, Microsoft held a Professional Developer's Conference (PDC) in San Diego. COM luminary Charlie Kindel stood up in a general session and proclaimed "no more GUIDs—no more HRESULTs—no more IUnknown." He and Mary Kirtland proceeded to show the basic architecture of the CLR, then known as the COM+ Runtime. Later in the session, Nat Brown and David Stutz stood up and demonstrated cross-language inheritance using Visual Basic and Java. Attendees actually went home with CDs containing primitive versions of compilers that could reproduce this very odd demonstration. It is now February 2002, and this technology has finally shipped in release form.

There are two days that will forever demarcate the evolution of the Microsoft platform. On July 27, 1993, Windows NT 3.1 was released, marking the end of the DOS era. On February 13, 2002, the Common Language Runtime (CLR) was released as part of the .NET Framework, marking the end of the COM era.

The .NET Framework is a platform for software integration. Fundamentally, the .NET Framework provides two core integration technologies. The Common Language Runtime (CLR) is used to integrate software within a single operating system process. XML Web Services are used to integrate software at Internet scale. Both rely on similar ideas, that is, strongly typed contracts and encapsulation. Fundamentally, though, they are two distinct technologies that one can elect to adopt independently of one another. It is completely reasonable to adopt XMLWeb Services prior to the CLR (in fact, many production Web services have already done this). It is also reasonable to adopt the CLR in the absence of XMLWeb Services in order to access CLR-specific features such as code access security or superior memory management facilities. Going forward, however, both the CLR and XML Web Services will be central to the Microsoft development platform, and it is only a matter of time before both of these technologies play a role in everyone's development experience.

The CLR and XML Web Services are both focused on strongly typed contracts between components. Both technologies require developers to describe component interactions in terms of type definitions or contracts. In both technologies, these contracts share two key ideas that tend to permeate their use: metadata and virtualization.

Both the CLR and XMLWeb Services rely on high-fidelity, ubiquitous, and extensible metadata to convey programmer intention. Metadata conveys the basic structure and type relationships to the developers who will consume a CLR component or XMLWeb Service.

Equally important, ubiquitous metadata informs the tools and underlying platform of what the component developers had in mind when they were authoring the code.

This metadata-directed "clairvoyance" allows the platform to provide richer support than would be possible if the component were completely opaque. For example, various aspects of object-to-XML mapping are captured in metadata for use by the CLR's XML serializer. How the developer intended the XML to look is conveyed through declarative metadata extensions rather than through explicit labor-intensive coding.

The second key idea that permeates CLR and XML Web Service contracts is the notion of virtualization. Both technologies emphasize the separation of semantic intentions from physical implementation details. Specifically, the metadata for both technologies work at an abstract structural level rather than in terms of low-level data representations and implementation techniques. When developers specify intercomponent contracts at this "virtual" level, the underlying platform is free to express the contracts in the most appropriate manner available. For example, by expressing Web Service contracts in terms of an abstract data model, the plumbing is free to use an efficient binary data representation for performance or to use the text-based XML 1.0 representation for maximum interoperability.

Because contracts are virtualized, this specific detail of the contract can be bound at runtime based on post-development characteristics.

Because this volume focuses exclusively on the CLR, a working definition of the CLR is in order. The CLR is fundamentally a loader that brings your components to life inside an operating system process. The CLR replaces COM's CoCreateInstance and Win32's LoadLibrary as the primary loader for code.

The CLR loader provides a number of services beyond what COM and Win32 offered before it. The CLR loader is version-aware and provides flexible configuration of version policies and code repositories. The CLR loader is security-aware and is a critical part of the enforcement of security policy. The CLR loader is type-aware and provides a rich runtime environment for the explicit management and creation of types independent of programming language. In short, the CLR loader is an advanced component technology that supplants COM as Microsoft's primary in-memory integration strategy.

The CLR is made accessible through compilers that emit the CLR's new file format. Program language wonks view the CLR as providing key building blocks for compiler writers, building blocks that reduce the complexity of compiler implementations. In contrast, systems wonks often view programming languages as facades or "skins" over the underlying constructs of the CLR. The author falls firmly into the latter camp. However, programming languages are a necessary lens through which even low-level systems plumbers view the CLR. To that end, examples in this book are written in various programming languages because binary dumps of metadata and code are arcane to the point of being incomprehensible.

About This Book

I try very hard to make a book readable and accessible to a wide array of readers, but invariably, my terse writing style tends to make a "Don Box book" a challenge to get through. Experience has shown me that I am horrible at writing tutorials or primers. What I can do reasonably well is convey how I see the world in book form. To that end, it is not uncommon to need to read a Don Box book more than once to get the intended benefits.

As the previous paragraph implied, this book is by no means a tutorial. If you try to learn .NET Framework programming from a standing start using this book, the results may not be pretty. For readers looking for a good tutorial on .NET programming techniques or the C# language, please read Stan Lippman's C# Primer (Addison-Wesley, 2002) or Jeffery Richter's Applied .NET Framework Programming (Microsoft Press, 2002) before taking on this book.

This book is divided into two volumes. Volume 1 focuses on the Common Language Runtime. Volume 2 will focus ST3on XMLWeb Services. Although the two technologies share a fair number of core concepts, the thought of covering them both in a single book made my head spin.

This book was written against Version 1 of the CLR. Some of the internal techniques used by the CLR may evolve over time and may in fact change radically. In particular, the details of virtual method dispatch are very subject to change. They are included in this book largely as an homage to COM developers wondering where the vptr went. That stated, the basic concepts that are the focus of this book are likely to remain stable for years to come.

Throughout the book, I use assertions in code to reinforce the expected state of a program. In the CLR, assertions are performed using System. Diagnostics.Debug.Assert, which accepts a Boolean expression as its argument. If the expression evaluates to false, then the assertion has failed and the program will halt with a distinguished error message. For readability, all code in this book uses the short form, Debug.Assert, which assumes that the System.Diagnostics namespace prefix has been imported.

My perspective on .NET is fairly agnostic with respect to language. In my daily life, I use C# for about 50 percent of my CLR-based programming. I use C++ for about 40 percent, and I resort to ILASM for the remaining 10 percent. That stated, most programming examples in this book use C# if for no other reason than it is often the most concise syntax for representing a particular concept or technique. Although some chapters may seem language-focused, none of them really is. The vast majority of this book could have used C++, but, given the tremendous popularity of C#, I elected to use C# to make this book as accessible as possible.

This book focuses on the Common Language Runtime and is divided into 10 chapters:

  • Chapter 1—The CLR as a Better COM: This chapter frames the discussion of the CLR as a replacement for the Component Object Model (COM) by looking at the issues that faced COM developers and explaining how the CLR addresses those issues through virtualization and ubiquitous, extensible metadata.
  • Sum Chapter 2—Components: Ultimately, the CLR is a replacement for the OS and COM loaders. This chapter looks at how code is packaged and how code is loaded, both of which are done significantly differently than in the Win32 and COM worlds.
  • Chapter 3—Type Basics: Components are containers for the code and metadata that make up type definitions. This chapter focuses on the CLR's common type system (CTS), including what constitutes a type and how types relate. This is the first chapter that contains significant chunks of source code.
  • Chapter 4—Programming with Type: The CLR makes type a first-class concept in the programming model. This chapter is dedicated to the explicit use of type in CLR programs, with an emphasis on the role of metadata and runtime type information.
  • Chapter 5—Instances: The CLR programming model is based on types, objects, and values. Chapter 4 focused on type; this chapter focuses on objects and values. Specifically, this chapter outlines the difference between these two instancing models, including how values and objects differ with respect to memory management.
  • Chapter 6—Methods: All component interaction occurs through method invocation. The CLR provides a broad spectrum of techniques for making method invocation an explicit act. This chapter looks at those techniques, starting with method initialization through JIT compilation and ending with method termination via strongly typed exceptions.
  • Chapter 7—Advanced Methods: The CLR provides a rich architecture for intercepting method calls. This chapter dissects the CLR's interception facilities and its support for aspect-oriented programming. These facilities are one of the more innovative aspects of the CLR.
  • Chapter 8—Domains: The CLR uses AppDomains rather than OS processes to scope the execution of code. To that end, this chapter looks at the role of AppDomains both as a replacement for the underlying OS's process model as well as an AppDomain's interactions between the assembly resolver or loader. Readers with Java roots will find the closest analog to a Java class loader here.
  • Chapter 9—Security: One of the primary benefits of the CLR is that it provides a secure execution environment. This chapter looks at how the CLR loader supports the granting of privileges to code and how those privileges are enforced.
  • Chapter 10—CLR Externals: The first nine chapters of this book are focused on what it means to write programs to the CLR's programming model. This concluding chapter looks at how one steps outside of that programming model to deal with the world outside of the CLR.

0201734117P09272002

Read More Show Less

Customer Reviews

Be the first to write a review
( 0 )
Rating Distribution

5 Star

(0)

4 Star

(0)

3 Star

(0)

2 Star

(0)

1 Star

(0)

Your Rating:

Your Name: Create a Pen Name or

Barnes & Noble.com Review Rules

Our reader reviews allow you to share your comments on titles you liked, or didn't, with others. By submitting an online review, you are representing to Barnes & Noble.com that all information contained in your review is original and accurate in all respects, and that the submission of such content by you and the posting of such content by Barnes & Noble.com does not and will not violate the rights of any third party. Please follow the rules below to help ensure that your review can be posted.

Reviews by Our Customers Under the Age of 13

We highly value and respect everyone's opinion concerning the titles we offer. However, we cannot allow persons under the age of 13 to have accounts at BN.com or to post customer reviews. Please see our Terms of Use for more details.

What to exclude from your review:

Please do not write about reviews, commentary, or information posted on the product page. If you see any errors in the information on the product page, please send us an email.

Reviews should not contain any of the following:

  • - HTML tags, profanity, obscenities, vulgarities, or comments that defame anyone
  • - Time-sensitive information such as tour dates, signings, lectures, etc.
  • - Single-word reviews. Other people will read your review to discover why you liked or didn't like the title. Be descriptive.
  • - Comments focusing on the author or that may ruin the ending for others
  • - Phone numbers, addresses, URLs
  • - Pricing and availability information or alternative ordering information
  • - Advertisements or commercial solicitation

Reminder:

  • - By submitting a review, you grant to Barnes & Noble.com and its sublicensees the royalty-free, perpetual, irrevocable right and license to use the review in accordance with the Barnes & Noble.com Terms of Use.
  • - Barnes & Noble.com reserves the right not to post any review -- particularly those that do not follow the terms and conditions of these Rules. Barnes & Noble.com also reserves the right to remove any review at any time without notice.
  • - See Terms of Use for other conditions and disclaimers.
Search for Products You'd Like to Recommend

Recommend other products that relate to your review. Just search for them below and share!

Create a Pen Name

Your Pen Name is your unique identity on BN.com. It will appear on the reviews you write and other website activities. Your Pen Name cannot be edited, changed or deleted once submitted.

 
Your Pen Name can be any combination of alphanumeric characters (plus - and _), and must be at least two characters long.

Continue Anonymously
Sort by: Showing all of 2 Customer Reviews
  • Anonymous

    Posted May 1, 2003

    A must have for any .NET Master

    Before you can call your self a .NET Master you must read this book. Don Box covers the CLR in great detail, including great chapters on Custom Metadata and Aspect-Oriented Programming with .NET. Don't just apply your old practices to this great new platform, learn how it was designed to be used. I can't wait to see what Volume 2 holds!

    Was this review helpful? Yes  No   Report this review
  • Anonymous

    Posted December 4, 2002

    Essential to your understanding of the CLR

    When Microsoft introduced COM to the development community, many developers became utterly confused. It was not uncommon for developers to say things like ¿What is COM?¿. In late 1997, Don Box taught all who read ¿Essential COM¿ the intricacies of COM. Don convinced many of us that COM really could be a better C++. Also in ¿Essential COM¿, Don distilled the ¿meat¿ of COM when he covered Intefaces, IUnkown, QueryInterface, Classes, Objects, and more. Well, Microsoft released the first version of .NET (place your own definition here) including the Common Language Runtime almost a year ago. In Don¿s latest book ¿Essential .NET, Volume 1: The Common Language Runtime¿, he does it again. Yes, Don, with the help of Chris Sells, has extrapolated the key parts of the Common Language Runtime (CLR) or what Don might call a better COM. Before I get into the meat of the review, I want to say that, in my opinion, this book is not for a beginning programmer and not necessarily even a beginning .NET programmer. If you are a beginning programmer and want an understandable, but not as deep, technical explanation of the CLR then I recommend you read ¿Applied Microsoft .NET Framework Programming¿ by Jeffrey Richter. If you are an experienced COM developer or you have spent some quality time programming in the .NET environment then I think this title (¿Essential .NET, Volume 1: The Common Language Runtime¿) will be a great addition to your library. As the title (¿The CLR as a Better COM¿) suggests, the first chapter takes a look at the origins of COM and provides the reader with the problem that the CLR is supposed to correct. This chapter is moderately useful to the experienced COM developer as it does set the intent, tone, and style of the chapters that follow. To the development newbie (who I wouldn¿t recommend read this book), this chapter will be less useful as the newbie is less concerned with where we came from and more concerned with they can live in the environment. I found the first chapter kind of fluffy. The second chapter, ¿Components¿, is where the reading gets good and meaty. When Don and Chris say ¿Components¿ they mean every little bit and byte that makes up the component. As a result, chapter two covers Modules, Assemblies, Public Keys, the CLR Loader, Resolving Names to Locations, and Versioning. It is in this chapter that, among other things, I learned that of the four assembly types the Module type is the only one that does not contain an assembly manifest. I loved the graphic illustrations in this chapter and the detailed description of what is *really* in an assembly. The third chapter, ¿Type Basics¿, covers all things type. The Common Type System (CTS) is another of the many acronyms introduced by .NET. The CTS is, essentially, what guarantees us that a String in Visual Basic .NET is a String in C#. Well, the String type can further be defined with all of the technical makeup of a Type in the CLR. Don and Chris bust open the Type shell and describe what¿s inside. There are lots of little code snippets in this chapter and more great illustrations. I¿m a very visual person so the code snippets really put many of the concepts into perspective for me. They also give me a head start when I head to notepad, a compiler, Anakrino, and ildasm to start doing some investigation of my own.

    Was this review helpful? Yes  No   Report this review
Sort by: Showing all of 2 Customer Reviews

If you find inappropriate content, please report it to Barnes & Noble
Why is this product inappropriate?
Comments (optional)