My Data-Driven Services with Silverlight 2 book published by O’Reilly Media is almost ready to hit the printing press and is available on Amazon for pre-order (it should be available in December). I have not published the TOC yet since it has changed a bit along the way. But it is pretty solid now so the Table of Contents for my book is below. I have included all of the chapter titles and a very brief summary of each chapter. There are ton of topics discusseimaged in the book that build up from the data binding chapters and drive deep into using services. The book assumes a basic knowledge of .NET development and XAML as well as Silverlight 2 basics. The style used in the book to present the material is to present the topic, what it does, how it works, when to use it, and then show an example application that demonstrates various techniques and features with Silverlight 2. All code for the book is in VB and C# (thanks to Instant VB).

Chapter 1, “Getting Started with Silverlight 2”

This chapter covers the steps required to develop applications with Silverlight 2, and explains the various tools and their purposes. It also examines the fundamentals of Silverlight 2, its control set, and the importance of XAML and its data-binding features, some .NET language enhancements, and includes a primer on XAML as it pertains to data and Silverlight.

Chapter 2, “Silverlight 2 Data-Binding Foundations”

This chapter discusses different ways to use data binding with XAML and with .NET code in Silverlight 2. It examines the controls and provides examples on how to bind custom objects. It also examines the DataContext in depth, as well as situations in which you can apply binding through XAML or .NET code.

Chapter 3, “Modes and Notifications”

This chapter demonstrates situations in which different binding modes can be most beneficial when used with objects and controls. It also explores how to make the Silverlight 2 controls listen for and respond to notifications through INotifyPropertyChanged that can be implemented on objects.

Chapter 4, “Managing Lists, Templates, and Converters”

This chapter explores various techniques for binding and presenting lists of data in list-based controls. It also discusses how to use templates to stylize and present data more efficiently in controls. Examples use LINQ to Objects to query lists of custom entities, converting bound data between the data source and the target controls, and implement notifications for list-based collections using INotifyCollectionChanged and ObservableCollection<T>.

Chapter 5, “WCF, Web Services, and Cross-Domain Policies”

This chapter demonstrates how to communicate between Silverlight 2 applications and WCF services—both custom and from third parties such as Live Services. It demonstrates how to build an application in Silverlight 2 that communicates with web services on different domains through SOAP using either WCF or ASMX web services. Also, it discusses what cross-domain policies are how to account for them, and how to debug applications using network-sniffing tools.

Chapter 6, “Passing Entities via WCF”

This chapter shows how to send and retrieve custom domain entities filled from ADO.NET-driven data mappers in the middle tier, and expose them through WCF contracts and serialization techniques. It also shows how to pass entities from tools such as LINQ to SQL and from the ADO.NET Entity Framework to and from Silverlight 2 applications.

Chapter 7, “Consuming RESTful Services with WebClient and HttpWebRequest”

This chapter discusses how to consume and present data retrieved from REST services and manipulate it using LINQ to XML. It demonstrates how to use WebClient and HttpWebRequest from Silverlight 2 to invoke RESTful communications with web services, and also includes a primer on RESTful services and how Silverlight 2 can communicate with them.

Chapter 8, “Consuming Amazon’s RESTful Services with Silverlight 2”

This chapter demonstrates how to send and receive data using the RESTful API exposed by the Amazon E-Commerce Service (also known as Amazon Associates Web Service). This shows how to build a Silverlight 2 application that allows users to search for and add items to a shopping cart stored at Amazon.

Chapter 9, “Creating RESTful Services and Introducing SilverTwit”

This chapter discusses how to build a RESTful service with which Silverlight 2 applications can communicate. The services allow GETs and POSTs to be sent from Silverlight 2 applications passing XML and JSON. The chapter also demonstrates LINQ to XML and LINQ to JSON, and includes a case study of the SilverTwit Twitter client to demonstrate how building a RESTful WCF application can be an important component of a Silverlight 2 application.

Chapter 10, “Syndication Feeds and Silverlight 2”

This chapter explains issues with consuming syndicated feeds from Silverlight 2 applications and how to overcome them. It also demonstrates the SyndicationFeed class and how to use it to build a robust Silverlight 2 application that uses web services to aggregate Atom and RSS feeds.

Chapter 11, “Silverlight 2 and ADO.NET Data Services”

This chapter demonstrates how ADO.NET Data Services is uniquely qualified to pass data to and from Silverlight 2 applications using REST-style web services. It also shows how ADO.NET Data Services can communicate with and issue LINQ queries against entity data models in a middle tier to save and retrieve data, handle concurrency, batch updates, transactions, implement custom service operations, and design business logic to intercept the LINQ query calls from the Silverlight 2 client.


Included in the appendices are some reference materials and a debugging tips and tricks section that describes how to use Fiddler2, Firebug and WebDevelopmentHelper to identify problems.