Wednesday, May 02, 2007

Microsoft Windows Communication Foundation

Microsoft Windows Communication Foundation
Step by Step

John Sharp, Content Master
Microsoft Press

This book is a great introduction to Microsoft Windows Communication Foundation, especially if your someone like me who has been waiting for it to mature and not actually living it since the "Indigo" days.

I specifically like the book because it functions as a "How To" guide and a reference; something most books are unable to do. It also includes fairly complete samples using available components; e.g. Adventure Works database and the Enterprise Library 2.0.

I'm not going into the chapter by chapter play here, but covering the highlights of things that stood out for me. The book definitely covers many WS specifications like WS-ReliableMessaging and WS-AtomicTransaction, but also discusses areas that will help you implement 'production' quality services from the get go.

Chapters 4-5 discuss securing WCF services and is a must read. They provide content that can be found elsewhere, but targeted for implementations using WCF services. Much of the recommendations are best practices identified by the Patterns and Practices group from Microsoft.

Chapter 6 covers maintaining contracts. Read this as understanding how to version your services throughout the service life cycle. This is extremely important, as most people do not think about having a strategy in place for this beyond simply making the service available (e.g. shipping it). I'm glad to say we spent some time in this area early on and follow the same pattern described in the book, except we actually use a version number vs. a date when versioning contracts. Then end result is the same as long as the runtime is able to distinguish a unique instance of a contract.

Chapter 12 discusses implementing services with performance in mind. Again, something often overlooked until you 'hit it', understanding some of the options available to you based on your service behavior could likely save you a 'refactoring for performance' step latter in the development cycle.

Chapter 13 gives understanding on message dispatching within the runtime using the WS-Addressing specification. For me, this gave me my first good taste of building a service router (e.g. SOAP router), which we've kicked around internally for a while. For example, if want to hide the actual endpoints (not because I'm being devious, its just not 'need to know' information) from a partner so that they have a single known end point for data exchange and then that router service handles exchanging messages that enter through a perimeter network and possibly route to services hosted behind an additional firewall. Still kicking this one around.