Alex Homer has figured it out

How to write less code and play more golf?

For patterns & practices, Enterprise Library is an important deliverable. We call it our crown jewel. Over the last few years, Enterprise Library has had about 1.3 million downloads. Here are some interesting numbers about Enterprise Library:

2003 – Year when the first application block was released

2005 – Year when v1 of Enterprise library was released.

1,290,000 – Total number of downloads of Enterprise Library since the first release.

6 – Number of Enterprise Library releases (v1.0, v1.1, v2.0, v3.0, v3.1, v4.0)

9 – Number of Application blocks in Enterprise Library 4.0

19 – Number of weekly iterations to build Enterprise Library 4.0

401 – Number of interim builds of Enterprise Library 4.0

900 – Number of pages of documentation in V4.0

8,000 – Number of automated tests cases in V4.0

100,000 – Number of executable lines of code in V4.0

And you read it right. There about 900 pages of documentation and a lot of code. This is frightening at first sight. Alex Homer has help in store (or should I say candy store) for you in this technical article titled “Write Less Code and Play More Golf-Getting to Know Enterprise Library 4.0

From his article:

The Enterprise Library Candy Store

The overall aim of the patterns & practices team at Microsoft is to make it easier to use Microsoft products to build applications and systems. They achieve this by providing software tools, software factories, utilities, and code libraries; plus guidance such as Help files, online documents, videos, and useful information in many other guidance formats.

One of the key products in the patterns & practices range is the Enterprise Library. This is a set of application blocks, core utilities and routines, and associated guidance that can simplify and speed up development of almost any type of application. Enterprise Library demonstrates best practice coding techniques, is generic and extensible, and free for you to use, modify, and distribute as part of your applications. It implements reusable code routines that make it easier to include in your applications features such as data access, logging, caching, validation, exception handling, cryptography, security credential management, policy injection, and dependency injection.

Yet many people take one look at Enterprise Library and are frightened off. Yes, there are a lot of features, a great deal of code, and more than 900 pages of documentation. At first glance, it may seem somewhat intimidating. I hear the same questions over and over again when I talk to developers and architects at conferences and user group meetings: “How long will it take to figure out what I need and then learn how to use it?”, “Why does it seem so complicated?”, and “Do I really want all those assemblies that I’m not using in my application?”.

The response to all these kinds of questions is that you only need to use the features that are relevant. You don’t have to include all the assemblies, you don’t have to understand all of the code, and you don’t have to write custom extensions unless you have relatively unusual requirements. You can treat Enterprise Library like one of those “pick & mix” candy store counters. You start by picking up a bag, and you are free to choose which, and how many of each, of the range of tempting items to get. With Enterprise Library, you include in your application the core features common to all the application blocks, and then you add just the specific features and the relevant assemblies that you need to implement the required functionality.

These assemblies are quite small (most are less than 200 KB, and many are less that 50 KB), and are digitally signed so that you can simply drop them into the bin folder of your application or install them in the global assembly cache if you prefer. In version 4.0 of Enterprise Library, the assemblies can be used as they are in partial trust environments such as Web Forms applications. In addition, if you decide to extend the features of an application block, you can usually do so without requiring recompilation of the original code-you simply write your custom providers as plug-ins that use the built-in extensibility points.

Click here to read the entire article.

Happy Reading!

Comments (4)

  1. I just posted a blog entry about EntLib and Alex’s article. I also wanted to share this list of web casts

  2. brad says:

    0 – Actual value of these horridly written, poorly architected, cumbersome libraries

  3. ajoyk says:

    Hi Brad,

    Sorry to hear that you feel this way about Enerprise Library. Please reach out to me at I would like to better understand your comments and feedback.