Foreword
You are holding in your hands a book that will make your life as an enterprise developer a whole lot easier.
It’s a guide on Microsoft Enterprise Library and it’s meant to guide you through how to apply .NET for enterprise development. Enterprise Library, developed by the patterns & practices group, is a collection of reusable components, each addressing a specific cross cutting concern—be it system logging, or data validation, or exception management. Many of these can be taken advantage of easily. These components are architecture agnostic and can be applied in a multitude of different contexts.
The book walks you through functional blocks of the Enterprise Library, which include data access, caching, cryptography, exception handling, logging, security, and validation. It contains a large collection of exercises, tricks and tips.
Developing robust, reusable, and maintainable application requires knowledge of design patterns, software architectures and solid coding skills. We can help you develop those skills with Enterprise Library since it encapsulates proven and recommended practices of developing enterprise applications on the .NET platform. Though this guide does not go into the depth of discussions of architecture and patterns, it provides a solid basis for you to discover and implement these patterns from a reusable set of components. That’s why I also encourage you to check out the Enterprise Library source code and read it.
This guide is not meant to be a complete reference on Enterprise Library. For that, you should go to MSDN. Instead, the guide covers most commonly used scenarios and illustrates how Enterprise Library can be applied in implementing those. The powerful message manifesting from the guide is the importance of code reuse. In today’s world of complex large software systems, high-quality pluggable components are a must. After all, who can afford to write and then maintain dozens of different frameworks in a system—all to accomplish the same thing? Enterprise Library allows you to take advantage of the proven code complements to manage a wide range of task and leaves you free to concentrate on the core business logic and other “working parts” of your application.
Another important emphasis that the guide makes is on software designs, which are easy to configure, testable and maintainable. Enterprise Library has a flexible configuration subsystem driven from either external config files, or programmatically, or both. Leading by example, Enterprise Library itself is designed in a loosely-coupled manner. It promotes key design principles of the separation of concerns, single responsibility principle, principle of least knowledge and the DRY principle (Don’t Repeat Yourself). Having said this, don’t expect this particular guide to be a comprehensive reference on design patterns. It is not. It provides just enough to demonstrate how key patterns are used with Enterprise Library. Once you see and understand them, try to extrapolate them to other problems, contexts, scenarios.
The authors succeeded in writing a book that is targeted at both those who are seasoned Enterprise Library developers and who would like to learn about the improvements in version 5.0, and those, who are brand new to Enterprise Library. Hopefully, for the first group, it will help orientate you and also get a quick refresher of some of the key concepts. For the second group, the book may lower your learning curve and get you going with Enterprise Library quickly.
Lastly, don’t just read this book. It is meant to be a practical tutorial. And learning comes only through practice. Experience Enterprise Library. Build something with it. Apply the concepts learnt in practice. And don’t forget to share your experience.
In conclusion, I am excited about both the release of Enterprise Library 5.0 and this book. Especially, since they ship and support some of our great new releases —Visual Studio 2010, .NET Framework 4.0 and Silverlight 4, which together will make you, the developer, ever more productive.
Scott Guthrie
Corporate Vice-President
Microsoft .NET Developer Platform
Redmond, Washington
May 18, 2010