architecting applications the microsoft way

31
Architecting Applications the Microsoft Way Clint Edmonson Developer Evangelist Microsoft Corporation

Upload: clint-edmonson

Post on 09-May-2015

6.494 views

Category:

Technology


0 download

DESCRIPTION

This presentation distills the best guidance from the Microsoft Patterns & Practices group to provide a hands-on approach to designing application architectures. Along the way, we’ll examine the key decisions that must be made when choosing our architectural styles and designing our layers and show how those decisions turn into a real shippable code on a project.

TRANSCRIPT

Page 1: Architecting Applications the Microsoft Way

Architecting Applications the Microsoft Way

Clint EdmonsonDeveloper EvangelistMicrosoft Corporation

Page 2: Architecting Applications the Microsoft Way

Who the heck needs architecture?

Page 3: Architecting Applications the Microsoft Way
Page 4: Architecting Applications the Microsoft Way
Page 5: Architecting Applications the Microsoft Way
Page 6: Architecting Applications the Microsoft Way
Page 7: Architecting Applications the Microsoft Way
Page 8: Architecting Applications the Microsoft Way
Page 9: Architecting Applications the Microsoft Way
Page 10: Architecting Applications the Microsoft Way

Architecture

“A unifying or coherent form or structure.” merriam-webster.com

Page 11: Architecting Applications the Microsoft Way

Design

“Design, at its most fundamental, is about finding solutions.” Garr Reynolds

Page 13: Architecting Applications the Microsoft Way

1. Identify architecture objectives− Goals based on size, scope, time

− Complete application− Prototype− Solving a technical risk− Exploring potential options− Building shared, reference models

− Target audience− Other architects− Developers− Testers− Operations

Page 14: Architecting Applications the Microsoft Way

2. Identify key scenarios

− Define the solution’s boundaries

− Identify who will impacted by the solution

− Discover what valuable activities will be automated

− Uncover constraints that will limit the solution

− Highlight those that are most important to the success of your application

Page 15: Architecting Applications the Microsoft Way

Brainstorming scope & key scenarios

Page 16: Architecting Applications the Microsoft Way

3. Create an application overview− Determine your application type

− Web− Mobile− Rich client− RIA− Web service− Some combination of the above

− Identify your deployment constraints

− Determine your relevant technologies

− Identify important architectural styles

Page 17: Architecting Applications the Microsoft Way

Architecture styles− Layered− Client/server− Component-based− Domain driven design − Message bus− N-Tier− Object-oriented− Service-oriented

This is our architecture toolbox!

Page 18: Architecting Applications the Microsoft Way

4. Identify key issues− Cross-cutting concerns

− Configuration− Security− Communication− Compression− Encryption− Logging & instrumentation− Validation− Error management

− Quality attributes− Run-time performance − Scalability− Disaster recovery

Page 19: Architecting Applications the Microsoft Way

5. Define candidate solution(s)− Choose an architecturally significant

scenario

− Design out a baseline architecture

− Prove it out

Page 21: Architecting Applications the Microsoft Way

Lay(er)ing it all out

− Describe the application at a high level

− Identify major components and other functional units of the design and their interdependencies

− Each layer represents a logical group of projects, namespaces, and/or other artifacts

Page 22: Architecting Applications the Microsoft Way

Initial architecture

Page 23: Architecting Applications the Microsoft Way

Physical deployment

− Visualize the physical structure of a system − Executables− Libraries− Services

− Focus on components of the system, their relationships, interfaces, and ports

− Highlight the service behavior that they provide and consume through interfaces

Page 24: Architecting Applications the Microsoft Way

Physical deployment

Page 25: Architecting Applications the Microsoft Way

Grouping layers into assemblies− Prefer fewer, larger assemblies

− Faster load time− Reduced working set− Better NGEN optimization− If several assemblies are always loaded together, consider

combining them into one

− Partition into separate assemblies based on− Security control− Independent versioning− Data access− Contributions from disparate sources

Page 27: Architecting Applications the Microsoft Way

Architecture after several iterations

Page 28: Architecting Applications the Microsoft Way

Best Practices− Minimize upfront design

− avoid starting more than 1 namespace deep when layering

− Analyze and refactor at the beginning of each iteration

− Separate functional areas of concern cleanly

− Avoid duplicating responsibilities

− Minimize dependencies between layers

− Make it obvious where code needs to go!

Page 29: Architecting Applications the Microsoft Way

References

− Microsoft Application Architecture Guide 2nd Editionby Microsoft Patterns & Practices Group

− Microsoft .NET: Architecting Application for the Enterpriseby Dino Esposito & Andrea Salterello

− Domain Driven Design by Eric Evans

− Framework Design Guidelines by Krzysztof Cwalina & Brad Abrams

Page 30: Architecting Applications the Microsoft Way

Q & A

Page 31: Architecting Applications the Microsoft Way

© 2009 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS,

IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.