Recently a colleague asked me for some suggestions on books and technologies that she could start reading to prepare for the roll out of our new enterprise Service Oriented Architecture, to help prepare for the mindset shift from n-tier development to SOA development. I thought I would post my response so that others could benefit, and for when the next person asks, I can just send them a link.
I just ordered the following book because I realized I had never actually read a book on Design Patterns for SOA, it is arriving today so I can’t tell you if it is good or not, but I used an excerpt from it already for a reporting design pattern I plan on using:
This is a bit of a classic, although getting a little outdated, I think the fundamental concepts on how to do REST correctly are still very good:
This book is on top of my reading pile right now, I’ve heard great things from other architects I know in Agile environments but other stuff keeps jumping ahead of it. I know this is not really a SOA book, but it’s tough to be a software architect in a scrum world:
I’m expecting the next big thing (what’s hot after SOA) to either be the CQRS pattern or Actor based programming, along those lines are:
and this book on CQRS:
In my opinion the CQRS pattern only makes sense if you are very scale, I have set aside that book after a couple chapters since I didn’t feel it was relevant to any of the current architecture projects I’m working on. Microsoft Orleans is a very slick implementation of Actor based programming, and I really think it could help to make the Actor pattern what is hot after SOA. I have noticed that really brilliant stuff gets lost in Microsoft Research and never makes it into general use, but I’m hoping… I’ve used it and think it promotes a design pattern that is much better than SOA. It is too new and still a research type framework so I don’t plan on bringing it into any production projects any time soon, but I am using it for projects outside of work.
This is a great book on unit testing, which is something I plan on promoting heavily in my new workplace as I start to do implementation. I’ve seen unit testing overdone in both of my last jobs and seen how much it can hurt a project, so making sure everyone understands how to do it effectively is a priority:
Finally the ESB I’m looking at using is Mass Transit. This is the third time I’ve chosen it and I have not been disappointed by it yet. :
Unfortunately the documentation tends to be a bit out of date and can be frustrating (the mass transit google group is the place for up to date knowledge), but there is a documentation project for it at:
These samples are the only thing that seems to be consistently up to date:
I recommend looking at Mass Transit + RabbitMQ, MSMQ examples are complicated and they are dropping support for it in the next major release anyway. They are planning on adding support for Azure Messaging in that same major release, which aligns with our plan target platform.
Do you have copies of some of the bibles of Design patterns?
Those are starting to show their age, but fundamental to current design patterns.