The Windows Communications Foundation (WCF), formerly code named indigo, is a programming framework that is used to build applications that inter-communicate. It is part of the .Net Framework, and is one of the four new APIs that was introduced with version 3.0 of the framework and that is included in Microsoft Vista, and Windows Server 2008.
Learning WCF was written by Michele Leroux Bustamante, that indigo girl herself who is the Chief Architect of IDesign Inc. and Microsoft Regional Director for San Diego. The book is written for the intermediate to advanced developer who is looking for a comprehensive introduction to WCF for building a Service Oriented Architecture (SOA). It is assumed that you are familiar with .NET 2.0 and Visual Studio 2005. It will help if you are also familiar with Windows Forms, ASP.NET, and Windows Service Applications. Learning WCF is 607 pages and is divided into eight chapters.
Chapter 1, "Hello Indigo," introduces you to WCF beginning with a look at the purpose of WCF, the problems it solves and its alignment with SOA. It will give you insight into what you will need to know to work with WCF, as well as touching on the architecture of WCF.
Chapter 2, "Contracts," focuses on contracts and serialization. You will see how to design service contracts, data contracts, as well as how to work with other serializable types to solve specific challenges. You will also see how services expose metadata to clients for proxy generation and how metadata exchange supports this. In essence you will learn everything you need to know about contracts.
Chapter 3 covers "Bindings," which are the heart of WCF. They are used to configure the communications protocols supported by services, including those related to interoperable messaging. Here you will see the uses for each of the core bindings, how bindings configure communications channels for clients and services, and you will find out when and why to apply custom bindings to handle special situations.
Chapter 4, "Hosting," examines the various hosting options for WCF services. These include Windows applications, Windows services, IIS, and the Windows Activation Service. You will find out about the hosting features and protocols supported by each environment, about the underlying hosting architecture they share and reasons for selecting each environment.
Chapter 5, "Instancing and Concurrency," explains how to configure services to run as singletons, to provide support for application sessions, or to run as scalable sessionless services. Concurrency modes that impact the number concurrent requests and other service throttling behaviors are also discussed.
Chapter 6, "Reliability," discusses those things that affect the overall reliability of an enterprise system. Features include reliable sessions, distributed transactions, and queued messaging. This chapter explains how to apply these features with WCF while providing guidance on when to use each feature.
Chapter 7, "Security," is a major feature in WCF and this chapter covers a lot of ground beginning with the fundamental concepts as they are implemented by WCF. You are then provided with scenarios for intranet, internet, partner or machine authentication with certificates, and federated security. You are provided with guidance while at the same time reducing some of the clutter surrounding implementation.
Chapter 8, "Exceptions and Faults," focuses solely on error handling concepts and debugging techniques. While some of these topics are covered throughout the book, they are looked at in depth in this chapter. By putting this chapter last you now have a better scope of WCF and will better understand the types of things that can go wrong and thus a better grasp on how to handle the problems.
There are also two appendixes; one that covers setup instructions for database configuration and setup, for ASP.NET membership provider model setup, and for working with certificates. The second covers Windows CardSpace to enhance the topic introduced in chapter 7.
I like Learning WCF on a number of levels. First it tackles the topic one at a time and lets you absorb the full impact of what you are learning. You are not bogged down with a digression in conceptual hyperbole about SOA. Instead you are given a clear logical path from simple to complex that lets you understand.
Next, I like the labs that many of the chapters contain in which you can get working results from the author's website. These too start simple and build to more complexity. Finally, although the book is written in C#, the author has provided labs and samples in Visual Basic as well.
While there is no doubt that there will be other books on WCF on the market — and that many of them will be good — if you are just getting started with this new technology or want to get a good foundation, then Learning WCF is a must-have. I highly recommend this book.