Monday, December 27, 2010

[Book Review] “Microsoft Enterprise Library 5.0” by Sachin Joshi from Packt Publishing

[Full Disclosure Notice: The mentioned book was provided to me free by the publisher. This review is my own. The publisher has not seen it, nor prompted me in its content in any way, shape or form. All they did is provide the book free and asked me to review it… ]

Special Offer just for you (my blog readers)! Use the below promotion codes for a 18% discount on the print or ebook editions.

Microsoft Enterprise Library 5.0


Table of Contents

  • Chapter 1: Getting Started with Enterprise Library
  • Chapter 2: Data Access Application Block
  • Chapter 3: Logging Application Block
  • Chapter 4: Exception Handling Application Block
  • Chapter 5: Caching Application Block
  • Chapter 6: Validation Application Block
  • Chapter 7: Security Application Block
  • Chapter 8: Cryptography Application Block


First off, I’d like to thank Packt for giving me the opportunity to review this book. I’ve been following the Enterprise Library (EntLib) for years (as you can see in the “Related Past Post XRef:” section below) and so when they offered me the chance to review this book I jumped at it.

This book is a high level, from a dev point of view, look at Microsoft’s Enterprise Library. Each of the major Application Blocks that make up EntLib are covered in their own chapters. Given that the book is 257 pages, it provides an introductory, overview, first dev look at these Blocks. Think “Enterprise Library 101.”

The book first gets you the Enterprise Library/code and sets them up to begin their Enterprise Library journey. The following chapters then take the you through the given Block, first introducing you to the given Block, their project references, as in Visual Studio/Add References references, the relations between Blocks, how to configure, call and use each Block. Each chapter is not code heavy, but there is enough to get the message across.


Clear Inter-Block Dependences. No bones about it, the Enterprise Library can be a monster. This version is much better than past versions, where using one thing would lead to another dependency and then to another and so on and and so on…  EntLib v5 is much better in than respect, but there are still times when a given Block’s feature relies on another Block’s capability. I really liked how this book made those dependencies, both required and optional ones, clear.

References (as in Visual Studio Project References). While newly released utilities, like NuGet, make managing Project References much easier, I still liked how the book made the required and optional references crystal clear.

Just enough printed code to get you going. Since this is an overview book, too much code would be a determent. This book provided enough code to get you over the initial learning curve, without being too much. i.e. No pointless code dumps with little purpose just to fill pages…

Block Based Chapters. Being organized into Block based chapters makes it much easier to learn what you need to learn and to use the book as a reference.

Unity. I liked how instantiating each block was shown three different ways; traditional, and two Unity based approaches. This felt like a real world approach to using EntLib fully.

GUI Config and Options. Like I’ve said, EntLib can be a monster. There are just SO many options, switches, knobs and widgets that getting things going and configured can be daunting. Again EntLib v5 is much better than past versions, but there’s so much in it that some config overload is almost impossible to avoid. That’s why I like how the EntLib GUI configuration was shown and discussed for each Block. Just enough information and walk-through to get you going and comfortable without filling the pages with every, single, possible option and choice. Just enough to get going and up the config learning curve.

Improvements/Thoughts (i.e. what else I’d like to see)

These thoughts are not digs at this book, but more toward how this book got me hungry for more… After reading this book I’m very much ready for the “201/301” book. I’m ready to see more real world usage scenarios, deployment and post-deployment/operation information. The book got us started on the road, but from start to finish, the road is long and windy.

I’d also like to see more information about contrib projects and means for extending Enterprise Library. There’s a ton of third parties doing some cool things to extend EntLib. It would be cool to see more of these projects, to avoid re-inventing any wheels, etc.

While the GUI config information was cool, I’d also like to see more config details and options. For example, I’d really like to know more about code based config for EntLib, more information about the EntLib Fluent Config, etc.

More code. Yeah, I know, I know. I just said that the level of code in the book was a good thing and now I saying that I wish there was more? While I am happy with the level of printed code, if I put on my dev hat, I just want more. I learn by example, I learn by seeing code, in seeing stuff being used. So with my dev hat on all I’m saying is that I’m ready for more EntLib usage code snips.

What Did I Learn?

Even though I’ve been following Enterprise Library developments for years, there’s still a good bit that I learned. For example, I did not know that the Data Access Block had the capability to automatically map between POCO’s and data. Yeah, you can use the Data Access Block and its Accessor capability to map an object to parameters and results. Think kind of like Entity Framework, but all in code…

Another example of something I learned was how the Validation Block can be used to validate objects via configuration. Through config only you can set up objects/properties to validate and change the validations post-deployment. Think about having classes where you don’t own the code, but you want to add validations to them, to even change the validations post-deployment. That’s where this capability comes into play. I really liked this idea and have been thinking about how I can use it since I read it…

And that’s just a couple things I picked up from this book. Sometimes to pick something up, to get the zen of it, you need to see the whole of it in front of you (i.e. not broken into bits and pieces that you get from online doc’s, chm’s, blog posts, etc)

Final Thoughts

Who is this book for? I think the perfect person for this book is the technical development manager or project lead who wants/needs an overview of the Enterprise Library. It’s not really for the down and dirty coder looking for depth, but a higher level (but not “business manager” level) look at the Enterprise Library. Say you’re a dev who’s seen this Library, downloaded it and now want to use it in a project, but you have to sell it to your Lead/Manager/etc. They need to learn just enough about the Library to feel comfortable in it and what it does… THAT, in my opinion, is the sweat spot for this book.

All in all I think the book is a good resource and one I will very likely use (to “sell” EntLib to a Lead/Manager/etc ;) in future.

Thanks again to Packt for giving me the opportunity to review it.


Special Offer (Limited Time)

Below are the discount codes for the following formats:
1. acprbk  - Print Book
2. acprebk- e-book

These discount codes are exclusively for you, my readers , which give you a discount of 18%. All you need to do is enter the code in the 'Promotion Code' field on the Packt website and click 'Update' during checkout. The discount will automatically be applied and these discount codes are only valid until January 31st , 2011.

The book can be purchased via, Microsoft Enterprise Library 5.0


Related Past Post XRef:
[Pre-Book Review] Microsoft Enterprise Library 5.0

Microsoft Enterprise Library 5.0 and Unity 2.0 RTW (& EntLib 3.x, 4.x to 5.0, Unity 1.x to 2 Migration Guide)
Enterprise Library 4.0 RTW (May 2008)
Unity 1.0, Microsoft's Dependency Injection, Inversion of Control (DI/IOC) Container, has RTW'ed
Enterprise Library 3.0 - April 2007 Released
Enterprise Library for .NET Framework 2.0 RTM (January 2006)
Enterprise Library MSN Messenger Log Listener
"Avanade Integration Pack for Microsoft Enterprise Library Released"
Enterprise Library Logging : Rolling Flat File Sink
Microsoft Enterprise Library Tutorials
Microsoft Enterprise Library WebCasts
Download details: Enterprise Library
Enterprise Library (New release of the patterns & practices Application Blocks)

No comments: