Book Review - Professional Enterprise .NET

I reviewed an ASP.NET Architecture and Design book recently. It was OK. I felt it was a bit thin, and didn't cover topics beyond beginner level. Then I got sent a review copy of another book: Professional Enterprise .NET. Having read it, this is the book that the previous book should want to be when it grows up.

Professional Enterprise .NET

Professional Enterprise .NET (Wiley Publishing ISBN 978-0-470-44761-1, 474pp) is written by Jon Arking and Scott Millett. It is intended (quoting the authors) "to serve as an introduction to some of the more popular software patterns and methodologies... for those with some background in Microsoft application development". It is especially geared towards those with some ASP.NET with C# experience. In other words, this book has been written for those people who have reached the point where they now understand why SqlDataSource controls are not used by serious developers. They have a basic understanding of OOP techniques, and are now looking to apply those in a meaningful way so that they can start to realise the promise that OOP holds. They probably don't fully understand how that might be realised yet. These people have possibly looked at ASP.NET MVC, and have now been exposed to a slew of new terms like TDD, Domain Driven Design, IoC, Separation of Concerns etc (or even brushed up against them previously), and want to learn more about how they can be used to make life easier as a serious, developing professional .NET programmer.

Enterprise Development can seem like rocket science. It is surrounded in a language and mystique that outsiders can find daunting - even impenetrable. Chapter 1 of this book does a very good job of breaking through all of that, and lays out the basic principals on which an Enterprise Development approach is founded. Chapter 2 builds on this with a high level discussion of the tools of the Enterpise Developer's trade, illustrated with good clear code samples. Chapter 3 takes a much more in depth look at the whole concept of what "Separation Of Concerns" really means in the context of part of an E-commerce application, and progressively refactors code samples to illustrate points beautifully. The chapter finishes with an extremely thorough and clear discussion on Dependency Injection.

Moving on, Test Driven Development principals are covered in Chapter 4, together with an introduction on using NUnit. Mocking is also covered, with a number of code samples that make use of Rhino Mocks. Chapter 5 is a particular highlight. It discusses Inversion of Control, and completely removes all the mystique that might surround this topic by showing the reader how to write their own (very basic) IoC container. The result won't compete with StructureMap or Unity, but it will help the reader to understand very quickly what these tools are all about. StructureMap is then examined by example. Prior to all of that, alternative methods to decouple dependencies are discussed.

Chapter 6 covers the concept of middleware, and examines distributed system oriented design patterns with a brief look at a WCF service. This is built on quite a bit in Chapter 7, which looks at Domain Driven Design principals in a fair bit of detail, and uses it as a basis for building a piece of middleware. Various ORMs are discussed in Chapter 8, and nHibernate is demonstrated as it is used to refit the application that was started in the previous chapter. The next 3 chapters look at UI matters, and take a good look at the MVC and MVP patterns. The book is then wrapped up with a concluding chapter and an appendix featuring a very brief C# language primer.

This book is extremely well structured, and covers each of its topics in just the right amount of depth, I felt. It's not lightweight by any means. But it isn't a heavyweight academic text book either. I know of Scott Millett. He's quite active around the Architecture sub forum at the asp.net forums. I don't know of Jon Arking, but judging by the style of the book, it's clear that he, like Scott, have a very good understanding of their audience. The book is pitched almost just right at the target it is aimed at. Some of the areas that it covers can be quite contentious, in that there are people around who will claim you are "not doing it properly" unless you strictly follow certain rules. The authors are very careful to point out that they see their role as illustrators of the principles behind approaches, rather than advocators of rigid protocols.

The code samples in this books are easily digestable and well explained. They are not over fussy, and therefore don't obscure the points that they are intended to illustrate. They relate to everyday applications, not arcane industrial processes or cryptographic services that I have been subjected to by some books. The majority of them are ASP.NET samples, but that shouldn't stop WPF or WinForms developers getting a lot out of this book.

I thoroughly enjoyed reading this book, and my copy is a little battered as it has travelled around on trains and in cars with me. I found that any spare moments I had, I filled with getting another section in. If you recognise yourself in the description of the kind of developer this book is intended for, I really recommend that you get youself a copy of it.

Date Posted:
Last Updated:
Posted by:
Total Views to date: 9904

3 Comments

- Jolyen

Great review! Describes the book perfectly.

- kw

I like forward to reading this book in the future. I'm very close to the target audience and I think I benefit greatly from reading this. Thanks for reviewing it. I didn't know it existed before I read this.

- Pranav Fulsoundar

excellent

Recent Comments

Justin Kusuma 7/24/2015 3:38 AM
In response to Posting Data With jQuery AJAX In ASP.NET Razor Web Pages
Hi Mike, thanks much for sharing such an article :) Really help me a lot... further, I'd like to...

Michael Easterbrook 7/22/2015 5:35 PM
In response to Inline Razor Syntax Overview
I removed the @ symbols and I am still getting the same error. It only occurs when I have an "if" a...

Sujay 7/22/2015 1:36 PM
In response to ASP.NET MVC, Entity Framework, One-to-Many and Many-to-Many INSERTS
can you explain how to link two tables so that it forms many to many relationship?(Article and...

Max G 7/21/2015 9:29 PM
In response to Scheduled Tasks In ASP.NET With Quartz.Net
Hi, I've opted for this solution in one of my applications but i've found that the apppool is and I...

Michael Easterbrook 7/20/2015 4:31 PM
In response to Inline Razor Syntax Overview
When I have the following code: @foreach (var procRow in procRowDecade) { if (@procRow[3] +...

Shanice 7/18/2015 10:58 PM
In response to A Better Way To Export Gridviews To Excel
Hi. I'm working with mvc. I need to add the above code in the business logic layer, however the...

Matt 7/18/2015 6:29 PM
In response to Nested Layout Pages with Razor
Cheers sir, nice explanation :)...

Keshavan 7/17/2015 9:06 AM
In response to Scheduled Tasks In ASP.NET With Quartz.Net
Hi Mike, I have followed exactly as illustrated in blog, I get error "StdSchedulerFactory.cs" not...

Paul Thiel 7/16/2015 5:17 PM
In response to ASP.NET 5 By Numbers
Comments Below: "The new version of ASP.NET is called ASP.NET 5. It is a framework for developing...

saket singh 7/16/2015 8:42 AM
In response to Scheduled Tasks In ASP.NET With Quartz.Net
hi Mike, great tutorial on Quartz.net , but i have One Problem , Everything is working fine as as...