When I joined Microsoft® patterns & practices in May 2004, my projects were all related to client development: smart clients and web clients, mostly. At that time, we considered it natural to extend our guidance to mobile clients. The result of that was the Mobile Client Software Factory, which was released in July 2006.
As I was preparing for this project, I looked back at the work we did at that time, and I was surprised in two very different and opposite ways. First, the list of technical challenges to cover was surprisingly similar. Both mentioned things like UI design and dealing with networks. Second, modern devices are light years ahead of what we had at that time: much more memory is available, graphics processor units (GPUs) now exist, there are more sophisticated sensors and, of course, the cloud is a much more powerful back end. A lot has remained the same, and a lot has changed.
This book covers two extremes of the Microsoft Windows® platforms: the massive computing resources of Windows Azure™ and the personal, tailored experience of Windows Phone 7. As we were developing this content, I was reminded of the richness of the Microsoft platform, and the opportunities it offers to developers today. Ideas that were merely seeds in our imagination a decade ago or that were available to only large corporations with huge resources, are now accessible to everyone with a PC. I feel privileged to have contributed, even a little bit, toward making this happen.
This guide follows the same scenario-based approach we used in our previous three guides on Windows Azure development and claims-based identity. We created a fictitious, yet realistic sample that is used as a case study throughout the chapters. The sample and the guide are complementary. You will find that the guide covers tradeoffs and design considerations that go beyond what is implemented in code. Often, there are many ways to solve one particular technical challenge. We tried to surface those tradeoffs and the thinking behind our decisions to equip you with the tools to make your own decisions in your own environments.
In the code, you will find that we have chosen to solve many problems in ways that are new and perhaps unexpected. An example of this is the extensive use of the Reactive Extensions for .NET Framework for all the asynchronous network calls. We chose to do this because it is our mission to empower you with better tools and frameworks.
I want to start by thanking the following subject matter experts and main contributors to this guide: Dominic Betts, Federico Boerr, Bob Brumfield, Jose Gallardo Salazar, Scott Densmore, and Alex Homer. Dominic is a veteran of many patterns & practices guides. As I wrote before, Dominic has this unique ability to explain complex topics in simple terms without losing rigor. Federico has been a member of our team since the very first guide we wrote for Windows Azure and has both the technical expertise and the gift of empathy, an essential attribute required to write guidance. Bob is an outstanding developer who brought with him an incredible wealth of experience and knowledge about Microsoft Silverlight® browser plug-in development, the main framework used throughout the guide to build applications on the phone. Jose was one of the original developers of the Mobile Client Software Factory, and is a very experienced mobile developer who understands what developing guidance is all about. I feel very privileged to have worked with Scott every day—his knowledge spans an amazing spectrum, from devices to Windows Azure™ technology platform, which is exactly what we needed for this guide. For this project, he also brought the unique perspective of an iPhone developer.
I share two passions with Alex Homer: software and railways. We were very lucky to count on Alex's experience as a technical author; he contributed to the solid structure and flow of this guide.
Many thanks also to the project's development and test teams for providing a good balance of technically sound, focused code: Federico Boerr (Southworks SRL), Bob Brumfield (Microsoft Corporation), Scott Densmore (Microsoft Corporation), Chris Keyser (Microsoft Corporation), Jose Gallardo Salazar (Clarius Consulting), Masashi Narumoto (Microsoft Corporation), Lavanya Selvaraj (Infosys Technologies Ltd.), Mani Krishnaswami (Infosys Technologies Ltd.), and Ravindra Varman (Infosys Technologies Ltd.).
The written content in this guide is the result of our great technical writing and editing team. I want to thank Dominic Betts (Content Master Ltd.), Tina Burden (TinaTech Inc.), RoAnn Corbisier (Microsoft Corporation), Alex Homer (Microsoft Corporation), and Nancy Michell (Content Master Ltd.).
The visual design concept used for this guide was originally developed by Roberta Leibovitz and Colin Campbell (Modeled Computation LLC) for A Guide toClaims-Based Identity and Access Control. Based on the excellent responses we received, we decided to reuse this design in our most recent titles, including this one. The book design was created by John Hubbard (eson). The cartoon faces were drawn by the award-winning Seattle-based cartoonist Ellen Forney. The technical illustrations were adapted from my Tablet PC mockups by Katie Niemer (Modeled Computation LLC).
This guide, just like all our guidance content, was broadly reviewed, commented on, scrutinized, and criticized by a large number of customers, partners, and colleagues. Once again, we were extremely fortunate to tap into the collective intellectual power of a very diverse and skillful group of readers.
I also want to thank all of the people who volunteered their time and expertise on our early content and drafts. Among them, I want to mention the exceptional contributions of Shy Cohen, Istvan Cseri, Markus Eilers, Jonas Follesø, David Golds, David Hill, Yochay Kiriaty, Joel Liefke, Steve Marx, Erik Meijer, Miguel Angel Ramos Barroso, Jaime Rodriguez, Soumitra Sengupta, Ben Schierman, Erwin van der Valk, and Matias Woloski. A very special thanks is in order for the entire patterns & practices Prism team: Larry Brader (Microsoft Corporation), Bob Brumfield (Microsoft Corporation), Geoff Cox (Southworks SRL), Nelly Delgado (Microsoft Corporation), David Hill (Microsoft Corporation), Meenakshi Krishnamoorthi (Infosys Technologies Ltd.), Brian Noyes (iDesign), Diego Poza (Southworks SRL), Michael Puleio (Microsoft Corporation), Karl Schifflett (Microsoft Corporation), Fernando Simonazzi (Clarius Consulting), Rathi Velusamy (Infosys Technologies Ltd.), and Blaine Wastell (Microsoft Corporation).
Last but not least, I'd like to thank Charlie Kindel, the executive sponsor for this project.
I hope you find this guide useful!
Senior Program Manager – patterns & practices
Redmond, MA, October 2010
Last built: May 25, 2012