Book Image

Applied Architecture Patterns on the Microsoft Platform

Book Image

Applied Architecture Patterns on the Microsoft Platform

Overview of this book

Every day, architects and developers are asked to solve specific business problems in the most efficient way possible using a broad range of technologies. Packed with real-world examples of how to use the latest Microsoft technologies, this book tackles over a dozen specific use case patterns and provides an applied implementation with supporting code downloads for every chapter. In this book, we guide you through thirteen architectural patterns and provide detailed code samples for the following technologies: Windows Server AppFabric, Windows Azure Platform AppFabric, SQL Server (including Integration Services, Service Broker, and StreamInsight), BizTalk Server, Windows Communication Foundation (WCF), and Windows Workflow Foundation (WF). This book brings together – and simplifies – the information and methodology you need to make the right architectural decisions and use a broad range of the Microsoft platform to meet your requirements. Throughout the book, we will follow a consistent architectural decision framework which considers key business, organizational, and technology factors. The book is broken up into four sections. First, we define the techniques and methodologies used to make architectural decisions throughout the book. In Part I, we provide a set of primers designed to get you up to speed with each of the technologies demonstrated in the book. Part II looks at messaging patterns and includes use cases which highlight content-based routing, workflow, publish/subscribe, and distributed messaging. Part III digs into data processing patterns and looks at bulk data processing, complex events, multi-master synchronization, and more. Finally, Part IV covers performance-related patterns including low latency, failover to the cloud, and reference data caching.
Table of Contents (26 chapters)
Applied Architecture Patterns on the Microsoft Platform
Credits
Foreword
About the Authors
About the Reviewer
Preface

Foreword

To understand is to perceive patterns.

-Isaiah Berlin

Architecting a good software solution is in many ways very much like the art of cooking a great meal. Just like a chef needs to have a broad knowledge of various ingredients that go into a meal, an architect needs to have a broad understanding of potential technologies and tools that he would need for a software solution. Just like a good chef masters the techniques of combining his raw ingredients into a delicious course, a good architect should know when and how to use and blend various software components to come up with elegant and efficient solutions. Just like a chef's work is confined by physical conditions and customer requirements, so is the work of a software architect. Both need the right kind of discipline and structure to cope with external constraints. So knowledge, experience, discipline, and structure are critical, but as any good chef or architect will tell you, the art of cooking or architecting requires something extra, and that is creativity. To put it simply in the words of the author John Updike:

Any activity becomes creative when the doer cares about doing it right, or better.

The book you are holding is a good example of the outcome of such creativity. I personally know the authors to be very experienced and knowledgeable on the topics they write—yet, it is a way they have chosen to distill their experience and know-how that make this book a very valuable resource for any software architect. Artfully transforming use-cases and requirements into recognizable patterns while discussing alternative architectures for implementing these patterns, this book provides you with an effective framework to handle the complexities of modern distributed applications.

Unlike cooking, where the basic raw ingredients do not change as much or as often over time, dealing with software architecture involves constant and frequent changes. New paradigms and methodologies for developing and delivering software solutions are constantly evolving. Innovative new technologies, some with overlapping capabilities, are introduced at an increasing pace into an already crowded marketplace. Making sense out of this dynamic and sometimes confusing domain, even when focusing only on Microsoft technologies, is quite a challenge. A great team of contributors was assembled to tackle the job. Together, they have produced an appealing guide by discussing a collection of common architectural patterns in software development and their implementation using Microsoft technologies.

This may seem like a book of "recipes" devised by a team of highly qualified "software chefs", but this is where again the analogy falls short: in the world of software, things are a more complex. In many cases, you'll find that you need to treat these recipes as the basis to build on. You will need to step into the role of the "chef" and start "cooking" your own solution by combining patterns or adjusting the suggested solutions to fit into your project's specific needs. Happy "software cooking"!

Ofer Ashkenazi

Senior Technical Product Manager

Microsoft