We’re happy to announce that Microsoft Application Architecture Guide, 2nd Edition (Patterns & Practices) is available now. You can buy it in hard copy via online retailers (ISBN: 9780735627109) or download it from the Microsoft Download Center.
Here’s the book’s Foreword by S. Somasegar:
In using our own technologies to build Microsoft products, and working with customersand partners every day, we have developed practical guidance on applyingbest practices for application architecture and design patterns and principlesusing our technologies. This guidance is valuable to both the developer and tothe solution architect. We have built the Microsoft Application Architecture Guide toconsolidate guidance that we have gathered from our internal practices, externalexperts, customers, and others in the community in order to share it with you.
The purpose of the guide is to help solution architects and developers to design andbuild applications on the Microsoft platform that are more effective, to support keydecision making at the early stages of a new project, as well as providing topic-specificcontent to help architects and developers improve their existing solutions. This guidanceincorporates the contributions and reviews from more than 25 external experts andcustomers.
By thinking about solutions in terms of architectural patterns and principles, qualityattributes, and crosscutting concerns, you can very quickly determine a baseline applicationarchitecture and the relevant technologies, patterns, and guidance assets thatwill help you build your solution. You can then use the guide to identify key areas ofyour application architecture so you can refine them for your scenario.
The guide includes reference application architectures for common application types,such as Web, rich client, RIA, mobile, and services applications; guidelines for qualityattributes and crosscutting concerns; and guidelines on design approaches that canhelp you to design and refine your solution architecture.
We are confident that the Microsoft Application Architecture Guide 2nd Edition will helpyou choose the right architecture, the right technologies, and the relevant patternsthat will help you make more effective design decisions.
Sincerely,S. SomasegarSenior Vice President of Developer DivisionMicrosoft
And here’s the Foreword Scott Guthrie contributed:
Application architecture is a challenging topic, as evidenced by the wide variety ofbooks, articles, and white papers on the subject. It is still too hard for developers andarchitects to understand architecture and best practice design for the Microsoft platform.The original Application Architecture for .NET: Designing Applications and Servicesguide did a great job of covering this topic, but it was written in 2002.
To deal with the many technology additions since then, J. D. Meier, David Hill,and their team from Microsoft patterns & practices have created a new applicationarchitecture guide to provide insightful guidance for designing applications andservices that run on the Microsoft platform based on the latest best practices andtechnologies. The outcome is Microsoft Application Architecture Guide 2nd Edition, aguide targeted to help solution architects and developers design effective applicationson the Microsoft platform. While the guide provides an overview of the .NETFramework, the Microsoft platform, and the main technologies and capabilitieswithin them, it also provides platform-independent, pattern-oriented, principles basedguidance that will help you design your applications on a solid foundation.
The guide is based on a number of key architecture and design principles that providestructure. It includes guidelines for identifying and dealing with key engineeringdecisions, and an explanation of the quality attributes, crosscutting concerns, andcapabilities that shape your application architecture; such as performance, security,scalability, manageability, deployment, communication, and more.
The guide also describes, at a meta-level, the tiers and layers that a solution architectshould consider. Each tier/layer is described in terms of its focus, function, capabilities,common design patterns, and technologies. Using these as a backdrop, the guidethen overlays relevant principles, patterns, and practices. Finally, the guide providescanonical application archetypes to illustrate common application types. Eacharchetype is described in terms of the target scenarios, technologies, patterns, andinfrastructure it contains.
The guidance as a whole is based on the combined experience and knowledge ofMicrosoft experts, Microsoft partners, customers, and others in the community. Itwill help you understand our platform, choose the right architecture and the righttechnologies, and build applications using proven practices and lessons learned.
Sincerely,Scott GuthrieCorporate Vice President of .NET Developer PlatformMicrosoft
And here is the book’s Preface, by David Hill:
There is an old joke, told amongst mischievous developers, that in order to beconsidered an architect you just need to answer every technical question with “itdepends”—Q: What’s the best way to implement authentication and authorization inmy solution? —A: It depends; Q: How should I implement my data access layer?—A:It depends; Q: Which technology should I use for my solution’s UI?—A: It depends.Q: How can I make my application scalable?—A: It depends. You get the general idea.
The truth is, of course, that it really does depend. Ultimately, every solution isdifferent and there are many factors, both technical and non-technical, that cansignificantly affect the architecture and design of a solution at both the small andthe large scales. The role of the developer and solution architect is to balance the(frequently contradictory) requirements and constraints imposed by the business,the end user, the organization’s IT environment and management infrastructure, theeconomic environment, and of course the technologies and tools that are used tobuild the solution.
And, to make life really interesting, these requirements and constraints are constantlyevolving as new opportunities arise or as new demands are imposed on the system.Changes to business rules or the emergence of new business areas can affect both newand existing applications. Over time, users expect richer, more consistent and morehighly integrated user experiences. New compliance requirements might emerge. Ornew IT infrastructure technologies might appear that can reduce costs or improveavailability or scalability. And, of course new technologies, frameworks, and tools arebeing released all the time with promises to reduce development costs, or to enablescenarios that were previously difficult to implement.
Clearly, making sense of all of this and at the same time delivering an effective solutionon budget and to schedule is not an easy task. It requires that the developer orsolution architect have to account for a whole host of competing and overlappingfactors (some of which are non-technical) and strike a pragmatic balance betweenthem all. Trying to account for too many factors can result in over-engineered,complex solutions that take a long time to build and nevertheless fail to deliveron promises of improved longevity or flexibility. On the other hand, considerationof too few factors can result in constrained, inflexible, and improvised solutions thatare difficult to evolve or that do not scale well. In other words, developers and solutionarchitects often have to walk the path between a “golden solution” on the onehand, and a “point-in-time solution” on the other.
This, to me, is what application architecture is all about—it’s about using today’stools and technologies to create as much business value as possible whilst keepingone eye on the requirements and constraints imposed by the business today, and oneeye looking to tomorrow to maximize ongoing value through scalability, flexibilityand maintainability. A good understanding of architectural principles and patternsallows the developer or solution architect to understand and factor into the overalldesign process the important design issues that can have a big impact on the overallsuccess of their solution. Armed with this knowledge, they can make more informeddecisions, better balance competing or overlapping requirements and constraints,and make sure that the solution not only meets or exceeds its business goals but itdoes so in way that is cost effective and scalable, maintainable and flexible.
You’ll notice that I refer to both developers and solution architects. I believe thatboth can benefit greatly from a solid understanding of the architectural patternsand principles outlined in this guide. Some might argue that the implementationdetails are less important than the overall design. In my experience this is not thecase. Small decisions accumulate over time. Implementation-level details can havea very large impact on the overall solution architecture and on its scalability, maintainability,and flexibility, so a solid understanding by both developers and solutionarchitects is essential. In addition, a shared understanding leads to better communicationbetween developers and architects, which is a good thing.
This guide aims to provide an overview of the application architecture and designprinciples and patterns that will help you make better decisions and build moresuccessful solutions. The guide is structured in a way that allows you to read itfrom start to finish, or use as a reference resource so you can jump directly to themost relevant sections. The first half of the guide is focused on generally applicablearchitecture and design principles and apply to any type of solution. The last halfis focused on common application types—such as Web applications, rich clientapplication, or mobile applications—and describes the typical architecture and keydesign considerations for each. It’s likely that your particular solution won’t mapdirectly to these, but they can serve to provide a baseline architecture that you cantake and evolve for your particular situation. The guide provides advice on how toidentify the key elements of your architecture so you can refine it over time.
There is a particular focus throughout the guide on developing solutions on theMicrosoft platform with the .NET Framework so the guide contains references toarticles and resources that provide details on relevant technologies and tools. You’llfind though that the underlying principles and patterns are generally applicable toany platform. It is also worth noting that the guide is not meant to be a complete andcomprehensive reference to every aspect of application architecture and design—thatwould require either a much larger guide, or multiple volumes—so the guide aims toprovide a pragmatic overview of the most important topics along with links to moredetailed guidance or in-depth material.
The field of application architecture and design is dynamic and constantly evolving. Thefoundations on which successful solutions have been built in the past will continueto serve us well into the foreseeable future, but we should also expect that the paceof innovation, in both technologies and new design approaches, will not decrease.The Microsoft platform and the .NET Framework and the range of technologies andscenarios that they support are both deep and wide, and getting deeper and widerall the time. On the other hand, we don’t need to wait for what might be. We canbuild compelling valuable solutions right now, and hopefully this guide will helpyou do just that.
David Hillpatterns and practicesSeptember 2009
Finally, here’s some more information about the guide from David.
according to a post on the MS press blog on twitter, there is a free download for this book?
Hi Scott. See the link in the first paragraph of our post? That points to the free download.