About This Guide

When you casually pick up a book in your local bookstore or select one from the endless collection available on your favorite Web site, you're probably wondering what the book actually covers, what you'll learn from it, whether the content is likely to be interesting and useful, and—of course—whether it is actually any good. We'll have a go at answering the first three of these questions here. The final question is one only you can answer. Of course, we would be pleased to hear your opinion through our community Web site at

What Does This Guide Cover?

As you can probably tell from the title, this guide concentrates on how you can get started with Enterprise Library. It will help you learn how to use Enterprise Library in your applications to manage your crosscutting concerns, simplify and accelerate your development cycle, and take advantage of proven practices. Enterprise Library is a collection of prewritten code components that have been developed and fine-tuned over many years. You can use them out of the box, modify them as required, and distribute them with your applications. You can even use Enterprise Library as a learning resource. It includes the source code that demonstrates Microsoft® .NET programming techniques and the use of common design patterns that can improve the design and maintainability of your applications. By the way, if you are not familiar with the term crosscutting concerns, don't worry; we'll explain it as we go along.

Enterprise Library is an extensive collection, with a great many moving parts. To the beginner, knowing how to best take advantage of it is not completely intuitive. Therefore, in this guide we'll help you to quickly understand what Enterprise Library is, what it contains, how you can select and use just the specific features you require, and how easy it is to get started using them. You will see how you can quickly and simply add Enterprise Library to your applications, configure it to do exactly what you need, and then benefit from the simple-to-use, yet extremely compelling opportunities it provides for writing less code that achieves more.

The first chapter of this guide discusses Enterprise Library in general, and provides details of the individual parts so that you become familiar with the framework as a whole. The aim is for you to understand the basic principles of each of the application blocks in Enterprise Library, and how you can choose exactly which blocks and features you require. Chapter 1 also discusses the fundamentals of using the blocks, such as how to configure them, how to instantiate the components, and how to use these components in your code.

The remaining seven chapters discuss in detail the application blocks that provide the basic crosscutting functionality such as data access, caching, logging, and exception handling. These chapters explain the concepts that drove development of the blocks, the kinds of tasks they can accomplish, and how they help you implement many well-known design patterns. And, of course, they explain—by way of code extracts and sample programs—how you actually use the blocks in your applications. After you've read each chapter, you should be familiar with the block and be able to use it to perform a range of functions quickly and easily, in both new and existing applications.

Finally, the appendices present more detailed information on specific topics that you don't need to know about in detail to use Enterprise Library, but are useful as additional resources and will help you understand how features such as dependency injection, interception, and encryption fit into the Enterprise Library world.

You can also download and work through the Hands-On Labs for Enterprise Library, which are available at

What This Guide Does Not Cover

The aim of this guide is to help you learn how to benefit from the capabilities of Enterprise Library. It does not describe the common design patterns in depth, or attempt to teach you about application architecture in general. Instead, it concentrates on getting you up to speed quickly and with minimum fuss so you can use Enterprise Library to manage your crosscutting concerns.

One of the core tenets of modern application design is that you should reduce the coupling or dependencies between components and objects, and Enterprise Library version 5.0 helps you achieve this goal through use of the Dependency Injection (DI) design pattern. However, you do not have to be a DI expert to use Enterprise Library; all of the complexity is managed internally by the core mechanisms within the framework. While we do explain the basic use of DI in terms of Enterprise Library, that is not a fundamental feature of this guide.

Enterprise Library is designed to be extensible. You can extend it simply by writing custom plug-in providers, by modifying the core code of the library, or even by creating entirely new blocks. In this guide, we provide pointers to how you can do this and explain the kinds of providers that you may be tempted to create, but it is not a topic that we cover in depth. These topics are discussed more fully in the documentation installed with Enterprise Library and available online at, and in the many other resources available from our community Web site at

For more information about the Dependency Injection (DI) design pattern and the associated patterns, see "Inversion of Control Containers and the Dependency Injection pattern" at

How Will This Guide Help You?

If you build applications that run on the Microsoft .NET Framework, whether they are enterprise-level business applications or even relatively modest Windows® Forms, Windows Presentation Foundation (WPF), Windows Communication Foundation (WCF), or ASP.NET applications, you can benefit from Enterprise Library. This guide helps you to quickly grasp what Enterprise Library can do for you, presents examples that show it in action, and make it easier for you to start experimenting with Enterprise Library.

The sample applications are easy to assimilate, fully commented, and contain code that demonstrates all of the main features. You can copy this code directly into your applications if you wish, or just use it as a guide when you need to implement the common functionality it provides. The samples are console-based applications that contain separate procedures for each function they demonstrate. You can download these samples from

Finally, what is perhaps the most important feature of this guide is that it will hopefully allay any fears you may have about using other people's code in your applications. By understanding how to select exactly the features you need, and installing the minimum requirements to implement these features, you will see that what might seem like a huge and complicated framework is actually a really useful set of individual components and features from which you can pick and choose—a candy store for the architect and developer.

What Do You Need to Get Started?

The prerequisites for using this guide are relatively simple. You'll need to be relatively experienced in C#, and understand general object-oriented programming techniques. The system requirements and prerequisites for using Enterprise Library are:

  • Supported architectures: x86 and x64.
  • Operating system: Microsoft Windows® 7 Professional, Enterprise, or Ultimate; Windows Server® 2003 R2; Windows Server 2008 with Service Pack 2; Windows Server 2008 R2; Windows Vista® with Service Pack 2; or Windows XP with Service Pack 3.
  • Microsoft .NET Framework 3.5 with Service Pack 1 or Microsoft .NET Framework 4.0.
  • For a rich development environment, the following are recommended:
    • Microsoft Visual Studio® 2008 Development System with Service Pack 1 (any edition) or Microsoft Visual Studio 2010 Development System (any edition).
  • To run the unit tests, the following are also required:
    • Microsoft Visual Studio 2008 Professional, Visual Studio 2008 Team Edition, Visual Studio 2010 Premium, Visual Studio 2010 Professional, or Visual Studio 2010 Ultimate Edition.
    • Moq v3.1 assemblies.
  • For the Data Access Application Block, the following is also required:
    • A database server running a database that is supported by a .NET Framework 3.5 with Service Pack 1 or .NET Framework 4.0 data provider. This includes Microsoft SQL Server® 2000 or later, SQL Server 2005 Compact Edition, and Oracle 9i or later. The database server can also run a database that is supported by the .NET Framework 3.5 with Service Pack 1 or the .NET Framework 4.0 data providers for OLE DB or ODBC.
  • For the Logging Application Block, the following are also required:
    • Stores to maintain log messages. If you are using the MSMQ trace listener to store log messages, you need the Microsoft Message Queuing (MSMQ) component installed. If you are using the Database trace listener to store log messages, you need access to a database server. If you are using the Email trace listener to store log messages, you need access to an SMTP server.

Other than that, all you require is some spare time to sit and read, and to play with the example programs. Hopefully you will find the contents interesting (and perhaps even entertaining), as well as a useful source for learning about Enterprise Library.