|

Addison-Wesley / Prentice Hall

Computer Science

My Instructor Resource Center :  Log in or request access

Programming in the .NET Environment
Damien Watkins
Mark Hammond
Brad Abrams

ISBN-10: 0201770180
ISBN-13:  9780201770186

Publisher:  Addison-Wesley Professional
Copyright:  2003
Format:  Paper; 560 pp
Published:  11/06/2002
Status: Available on Demand   What's this?



An authoritative guide for students that need to develop software that takes full advantage of the .NET Framework. This book shows students how to produce generic frameworks, libraries, classes, and tools to be used in the .NET Framework. It also shows how to use the right language to develop parts of a system and then incorporate these parts together at runtime regardless of language differences. The book concludes with a series of appendices.

The authoritative guide for developers who want to develop software that fully takes advantage of the .NET Framework.

° One of the first books in The Microsoft .NET Development Series, direct from Microsoft

° Well-known and influential author team. Microsoft has sent Damien on a worldwide speaking tour.

° Not only describes the goals and architecture of the .NET Framework, but also demonstrates how it implements facilities and services to meet these goals.

(NOTE: Each chapter concludes with a Summary.)

Foreword.


Preface.


1. Introducing the .NET Framework.

Programming Issues.

Programming in the Small.

Programming in the Large.

Solutions.

Comparing the .NET Framework and IDL-Based Systems.

Elements of the .NET Framework.

Common Language Runtime.

Base Framework.

Exposing the .NET Framework.

Windows Clients.

ASP.NET: Web Forms.

ASP.NET: Web Services.

Terminology.

The Type System.

The Metadata System.

The Execution System.

Example: Hello World.



2. The Type System.

The Relationship Between Programming Languages and Type Systems.

The Evolution of Type Systems.

Programming Language-Specific Type Systems.

The Design Challenge: Development of a Single Type System for Multiple Languages.

CLR-Programming Language Interaction: An Overview.

Elements of the CLR Type System.

Value Types.

Built-in Value Types.

User-Defined Value Types.

Reference Types.

Object Types.

Interface Types.

Pointer Types.

Example: User-Defined Object Type.

Example: Use of Interfaces on Value Types.

Assignment Compatibility.

Nested Types.

Visibility.

Accessibility.



3. The Metadata System.

Medata Issues.

Saving Metadata About Types: IDL Files.

Reflection: Inspection of a Type's Metadata.

Reflection Classes.

Example: Using Reflection.

Example: Use of Type as an Abstract Type.

Metadata Tools and Extensions.

A Tool for Reading Metadata.

Metadata Extensibility.

Dynamic Discovery of Types.

Assemblies and Manifests.

Meta-Programming.

Metadata File Format.

COM Interop.



4. The Execution System.

The Execution System Versus Other—Component Models.

Intermediate Language.

Example: Generating Intermediate Language.

Verification of Intermediate Language.

Starting a CLR Program.

COR Debugger.

Application Domains.

Memory Management.

Value Types Versus Reference Types.

Garbage Collection.

Security.

Role-Based Security.

Evidence-Based Security.

Policy Manager.

Code Groups.

Named Permission Sets.

Policy Assemblies.

Examining Policy Levels and Permission Sets.

Stack Walks.

Declarative and Imperative Style.



5. Building Applications.

Existing Technologies to Solve Application-Related Problems.

Well-Known Locations.

Search Paths.

Symbolic Names.

Versioning-Related Technologies.

Windows Registry.

Assemblies.

Example: A Simple Assembly.

Version 1 of AboutBox.

Building the Assembly with nmake and makefile.

Functioning of the makefile.

Embedded and Linked Resources.

Example: A .NET Assembly with Embedded Resources.

Example: A .NET Assembly with Linked Resources.

The Assembly Linker.

Public and Private Assemblies.

Strong Names.

Assembly Caches.

Example: Creating and Using Public Assemblies.

Assembly Versioning.

Example: Building a Second Version of an Assembly.

Example: Binding to a Different Version of an Assembly.

Internalization and Localization.

Definitions.

Existing Technologies: Separation of Code and User Interfaces.

.NET Localization Concepts.

Example: A Localized Application.

Application Domains.

Application Domains Versus Processes.

Use of Application Domains.

Example: Retrieving Current Application Domain Information.

Example: Creating and Manipulating Application Domains.

Example: Loading Assemblies into Application Domains.



6. Deploying Applications.

Configuration Files.

Text-Based Configuration Files.

CLR Configuration Files.

Which Configuration Files to Use?

Downloading Web Content.

Referencing Assemblies with the codeBase Element.

The Download Cache Revisited.

Web Controls.

Installing Applications.

Copying Files to the Computer.

Downloading Files to the Computer.

Using Traditional Installation Programs.

Installing the .NET Framework.

The ECMA CLI Standards.

Compact Framework.

Smart Device Extensions.

Shared Source Common Language Infrastructure.



7. The Framework Class Library.

A Historical Perspective.

C/C++.

SmallTalk.

LISP.

C++.

Java.

Support for Multiple Programming Languages.

Goals of the .NET Framework.

Unify Programming Models.

Be Factored and Extensible.

Integrate with Web Standards and Practices.

Make Development Simpler.

Design Guidelines.

Naming Guidelines.

Member Usage.

Namespaces.

System.

System.Collections.

System.Data.

System.Globalization.

System.Resources.

System.IO.

System.Net.

System.Reflection.

System.Security.

System.Text.

System.Threading.

System.Runtime.InteropServices.

System.Windows.Forms.

System.Web.

System.Web.Services.

System.Xml.

Looking Back and Looking Ahead.



Appendix A: Visual Basic .NET.

Type System Additions.

Classes.

Inheritance.

Overloading.

Namespaces.

Type System Modifications.

Arrays.

Variant and Object Types.

Structures.

Date, Currency, and Decimal Types.

Platform Changes.

Deterministic Finalization and Garbage Collection.

Let and Set Assignment.

Late Binding.

On Error and Structured Exception Handling.

Events and Delegates.

Language Cleanup.

New Features.

Future Directions.

Conclusions.



Appendix B: C#.

History and Design Goals.

A Brief History of C++ and C#.

C# Design Goals.

The C# Type System.

Reference Versus Value Types.

User-Defined Types.

Component-Oriented Development.

Properties.

Indexers.

Operator Overloading.

Attributes.

Delegates.

Events.

Unsafe Code.

Advanced Interoperability.

Dealing with Existing Structures.

Performance Extremes.

Neat Things.

foreach.

switch on String.

params Arrays.

XML Comments.

A Stack Component Example.

Future Directions.

C# and Standardization.

Conclusions.



Appendix C: Python for .NET.

A Brief Overview of Python.

About Python.

Python Implementations.

Terminology.

Python for .NET.

Current Status.

Architecture.

Using Python for .NET.

Example: Hello World.

Using .NET Objects.

Method Signatures and Overloads.

Other Examples of Compiler Techniques.

Limitations of Python for .NET.

Performance.

Closed World Syndrome.

Class and Instance Semantics.

Type Declarations or Inference for Speed.

Type Declarations for Semantics.

Possible .NET and Python Enhancements.

Type Declarations.

Dynamic Language Support.

Alternative Implementation Strategies.

Python for .NET.

The Compiler.

The Runtime.

The Library.

Conclusions.



Appendix D: Perl and the .NET Runtime.

Perl for .NET Research Compiler.

The Parser.

The Code Generator.

The Runtime Library.

PerlNET Component Builder.

Interface with Standard Perl Interpreter.

Challenges.

Supported .NET Features.

PerlNET Status.

Example: A Windows Forms Application.

Conclusions.



Appendix E: Component Pascal on the CLR.

About Component Pascal.

The Type System.

Statements.

Module Structure.

Mapping to the CLR.

Mapping the Program Structure.

The Synthetic Static Class.

Controlling Visibility.

Mapping the Type System.

Static Record Types.

Dispatched Methods.

Semantic Challenges.

Nonlocal Addressing.

Structural Compatibility of Delegates.

Covariant Function Types.

Conclusions.

Compatibility Extensions.

Performance.

Notes.



Appendix F: Hotdog: Compiling Scheme to Object-Oriented Virtual Machines.

Introduction to the Hotdog Scheme Compiler.

Scheme, Briefly.

Object-Oriented Virtual Machines.

Implementations.

Closures.

Small Values.

Dynamic Type Checking.

Limitations.

Performance Improvements.

Conclusions.

References.



Appendix G: Functional Languages for the .NET Framework.

A Brief Introduction to Mondrian.

The Type System.

Exception Handling.

Concurrency Support.

The Syntax.

Types in Mondrian.

Primitive Types.

Type Products.

Type Unions.

Parametric Types.

Functions in Mondrian.

Monomorphic Functions.

Polymorphic Functions.

Partial Applications.

Just-in-Time Evaluation.

Calling Other CLR-Hosted Languages.

The Power of .NET: A Multilanguage Example.

The Sieve of Eratosthenes in C#.

The Sieve: Combining Mondrian and C#.

A Glimpse into the Future: Improving the Interface.

Conclusions.

References.



Appendix H: Active Oberon for .NET: A Case Study in Language Model Mapping.

History of the ETH Programming Languages.

The Active Object System.

An Extended Concept of Object Types.

A Unified Concept of Abstractions.

A Concept of Static Modules.

The Mapping to the Common Type System.

Recapitulation of the .NET Interoperability Framework.

Mapping Modules.

Mapping Definitions.

Interoperability.

Mapping Active Behavior.

Language Fitting.

Summary and Conclusions.

Acknowledgments.

References.



Glossary.


Suggested Reading List.


Index. 0201770180T10292002

View a Sample Chapter PDF:/samplechapter/0201770180.pdf

Damien Watkins is the founder of Project 42, a consulting company specializing in the development of Component Based Systems for the Internet. Until 2002 he was a lecturer at Monash University in Melbourne, Australia. Damien became involved with the development of the .NET Framework in 1998 when Microsoft invited Monash University to join Project 7, an early access program for .NET.

Mark Hammond has been an independent software consultant since 1995. He has produced many of the Windows extensions for Python, including PythonWin, Active Scripting and Active Debugging support, and coauthored the Python/COM framework and extensions. In 2000 he published his first book, Python Programming on Win32, and from 1999 through 2001 developed the first .NET implementation of the Python language.

Brad Abrams was a founding member of both the Common Language Runtime and .NET Framework teams at Microsoft, where he is currently a Lead Program Manager. Brad has been involved with WinFX and Windows Vista efforts from the beginning. His primary role is to ensure consistency and developer productivity of the .NET Framework through Vista and beyond. His popular blog can be found at http://blogs.msdn.com/BradA/.



Programming in the .NET Environment is the software developer's guide to the .NET Framework. The authors describe Microsoft's vision for distributed component-based systems development and then show programmers how to develop software that takes full advantage of the features of the .NET Framework. Readers learn how to author components, libraries, and frameworks that not only exploit the capabilities of the .NET Framework but also integrate seamlessly into that environment.

This book begins with an introduction to the goals and architecture of the .NET Framework. Readers will then gain a thorough understanding of the type, metadata, and execution systems; learn how to build and deploy their components within .NET assemblies; and gain an understanding of the facilities of the Framework Class Libraries.

Topic coverage includes:

  • The Common Language Runtime (CLR) and the Framework Class Libraries
  • The CLR's Type, Metadata, and Execution Systems
  • Creating and deploying .NET Assemblies
  • Internationalization and localization facilities
  • .NET Languages, including C# and Visual Basic .NET

The book concludes with appendixes written by other specialists in the field: Paul Vick (writing about VB .NET), Eric Gunnerson (on C#), Mark Hammond (on Python for .NET), Jan Dubois (on Perl for .NET), John Gough (on Component Pascal for .NET), Pankaj Surana (on Scheme for .NET), Nigel Perry (on Mondrian), and Juerg Gutknecht (on Active Oberon for .NET).

Written by a team of experienced authors using a practical, authoritative approach, Programming in the .NET Environment is an indispensable guide to developing components that fulfill the promise of Microsoft's .NET Framework.

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.



0201770180B10312002

Pearson Higher Education offers special pricing when you choose to package your text with other student resources. If you're interested in creating a cost-saving package for your students contact your Pearson Higher Education representative.