Book recommendations

There are so many books out there, but some of them are better than others.

Therefore, I decided to compile a list of all the books I've read and considered a must read for others.

This way you can at least get a head start if you are just starting to learn about .Net application development, design and architecture without having to wade through all possible books in the bookstore.

Development

CLR via C#

Understanding the CLR is one of the prerequisites in my opinion before you can call yourself a real .Net developer, understanding the CLR means that you have read, oh no studied, this book at least twice...

This book contains so much insightfull information on how all the pieces work, from the first attempt to load assembly up until the last garbage collected object, that it must definitly be on your bookshelf.

Building Asp.Net Server Controls

From all the books that I've read on asp.net, I liked this book ( and it's successor ) best. It goes really deep on how the control system in asp.net works.

It gave me a lot of insight in how the asp.net framework works, I can still impress my colleagues with my knowledge on asp.net everyday thanks to this book.

Programming WCF Services

Windows Communication Foundation is currently the communication framework of choice for most of us and the ultimate reference book in my opinion is Juval Löwy's 'Programming WCF services'.

If you are new to WCF, it might be a bit overwhelming, but that will be true for allmost all the books on this list I guess...

Don't try to build a production service without reading this book.

Advanced .Net Remoting

Eventhough WCF is gaining so much momentum, doesn't mean that .Net Remoting is dead. Far from in reality, but it's used differently today.

Many of the cool frameworks that are used in the alt.net environment for doing stuff like Mocking, ORM's, AOP are based on the implicit messaging model supported by .Net Remoting.

Do not dismiss it, as long as WCF remains an explicit and opt-in communication system, remoting will keep a spot in my toolset.

And who knows more about remoting than Ingo Rammer.

Design

Design Patterns: Elements of Reusable Object-Oriented Software

The mother of all design patterns books by the Gang Of Four. These patterns form the basis for all more advanced patterns.

If you are serious about designing applications you need to master these patterns, period.

Patterns of enterprise application architecture

I believe that most patterns that I've ever mentioned in my blog posts, come from this book or at least from it's author, Martin Fowler.

It contains so many usefull patterns for implementing enterprise services, definitely a must read.

Domain Driven Design: Tackling complexity in the heart of software

Complexity is probably the most difficult and most costly aspect of software development. Investing a little bit extra time and thought before implementing an application can seriously reduce this cost.

Eric Evans has spent a lot of time, thinking about how to simplify the most complex part of the software, it's business domain.

I promise, if you read this book a few times and learn to apply it's patterns and practices to your service implementations, software development will become simpler than ever.

Applying Domain Driven Design with patterns

This book gives a more practical view on Domain Driven Design, and constantly uses patterns from 'Patterns of enterprise application architecture' to implement the examples.

If that's not enough, it also shows how to apply Test Driven Development, make good use of Object Relational Mappers and much much more...

Architecture

Enterprise Integration Patterns

Eventhough the title of this book says it's about Enterprise Integration Patterns, it's not... It's actually the bible for asynchronous messaging patterns.

As we, the .Net software industry, are becoming more and more aware that asynchronous messaging is the way forward, this book is becoming more and more important.

SOA Principles of service design

Service Oriented Architecture, do you really know what it's all about? Do you really understand concepts like service autonomy and loose coupling?

My bet is, if you have read this book or better the entire Prentice Hall series, you know you didn't...

Simple architectures for complex enterprises

Complexity is probably the most difficult and most costly aspect of software development. Investing a little bit extra time and thought before implementing an application can seriously reduce this cost. (sounds familiar?)

This book looks at the same problem as Domain Driven Design, but from a different perspective, the entire enterprise architecture.

It provides a mathemathical model, based on equivalance classes, that allows to determine autonomous services in a reproducible way. More autonomy, less dependencies, really really interesting material...