Download Microsoft Application Architecture Guide v2.0 and more Study Guides, Projects, Research Windows Programming in PDF only on Docsity!
M I C R O S O F T
®
A P P L I C A T I O N
A R C H I T E C T U R E
G U I D E
2 nd^ Edition
ISBN: 9780735627109 Information in this document, including URL and other Internet Web site references, is subject to change without notice. Unless otherwise noted, the example companies, organizations, products, domain names, e-mail addresses, logos, people, places, and events depicted herein are fictitious, and no association with any real company, organization, product, domain name, e-mail address, logo, person, place, or event is intended or should be inferred. Complying with all applicable copyright laws is the responsibility of the user. Without limiting the rights under copyright, no part of this document may be reproduced, stored in or introduced into a retrieval system, or transmitted in any form or by any means (electronic, mechanical, photocopying, recording, or otherwise), or for any purpose, without the express written permission of Microsoft Corporation. Microsoft may have patents, patent applications, trademarks, copyrights, or other intellectual property rights covering subject matter in this document. Except as expressly provided in any written license agreement from Microsoft, the furnishing of this document does not give you any license to these patents, trademarks, copy- rights, or other intellectual property. © 2009 Microsoft Corporation. All rights reserved. Microsoft, MS-DOS, Windows, Windows NT, Windows Server, Active Directory, MSDN, Visual Basic, Visual C++, Visual C#, Visual Studio, and Win32 are either registered trademarks or trademarks of Microsoft Corporation in the United States and/or other countries. The names of actual companies and products mentioned herein may be the trade- marks of their respective owners.
iv .NET Application Architecture Guide, 2nd Edition
- Chapter 3: Architectural Patterns and Styles
- Overview.
- What.Is.an.Architectural.Style?.
- Summary.of.Key.Architectural.Styles..
- Combining.Architectural.Styles.
- Client/Server.Architectural.Style.
- Component-Based.Architectural.Style
- Domain.Driven.Design.Architectural.Style.
- Layered.Architectural.Style.
- Message.Bus.Architectural.Style
- N-Tier./.3-Tier.Architectural.Style
- Object-Oriented.Architectural.Style.
- Service-Oriented.Architectural.Style.
- Additional.Resources.
- Chapter 4: A Technique for Architecture and Design
- Overview.
- Inputs,.Outputs,.and.Design.Steps.
- Identify.Architecture.Objectives
- Key.Scenarios.
- Architecturally.Significant.Use.Cases.
- Application.Overview.
- Relevant.Technologies
- Whiteboard.Your.Architecture.
- Key.Issues
- Quality.Attributes..
- Crosscutting.Concerns
- Designing.for.Issue.Mitigation.
- Candidate.Solutions.
- Baseline.and.Candidate.Architectures
- Architectural.Spikes
- What.to.Do.Next.
- Reviewing.Your.Architecture
- Scenario-Based.Evaluations.
- Representing.and.Communicating.Your.Architecture.Design.
- Design Fundamentals Contents v
- Chapter 5: Layered Application Guidelines
- Overview
- Logical Layered Design
- Presentation, Business, and Data Layers
- Services and Layers
- Design Steps for a Layered Structure
- Step 1 – Choose Your Layering Strategy
- Step 2 – Determine the Layers You Require
- Step 3 – Decide How to Distribute Layers and Components
- Step 4 – Determine If You Need to Collapse Layers
- Step 5 – Determine Rules for Interaction Between Layers
- Step 6 – Identify Cross Cutting Concerns
- Step 7 – Define the Interfaces between Layers
- Step 8 – Choose Your Deployment Strategy
- Step 9 – Choose Communication Protocols
- Chapter 6: Presentation Layer Guidelines
- Overview
- General Design Considerations
- Specific Design Issues
- Caching
- Communication
- Composition.
- Exception Management
- Navigation
- User Experience
- User Interface
- Validation
- Technology Considerations
- Mobile Applications
- Rich Client Applications
- Rich Internet Applications
- Web Applications
- Performance Considerations.
- Design Steps for the Presentation Layer
- Relevant Design Patterns
- patterns & practices Offerings
- Additional Resources
- Chapter 7: Business Layer Guidelines vi .NET Application Architecture Guide, 2nd Edition
- Overview
- General Design Considerations
- Specific Design Issues
- Authentication
- Authorization
- Caching
- Coupling and Cohesion
- Exception Management
- Logging, Auditing, and Instrumentation
- Validation
- Deployment Considerations
- Design Steps for the Business Layer
- Relevant Design Patterns
- patterns & practices Offerings
- Additional Resources
- Chapter 8: Data Layer Guidelines
- Overview
- General Design Considerations
- Specific Design Issues
- Batching
- Binary Large Objects
- Connections
- Data Format.
- Exception Management
- Object Relational Mapping
- Queries.
- Stored Procedures.
- Stored Procedures vs. Dynamic SQL
- Transactions
- Validation
- XML
- Technology Considerations
- Performance Considerations.
- Security Considerations
- Deployment Considerations
- Design Steps for the Data Layer
- Relevant Design Patterns
- Additional Resources
- Chapter 9: Service Layer Guidelines Contents vii
- Overview
- Design Considerations.
- Specific Design Issues
- Authentication
- Authorization
- Communication
- Exception Management
- Messaging Channels
- Message Construction
- Message Endpoint
- Message Protection
- Message Routing.
- Message Transformation
- Service Interface
- Validation
- REST and SOAP
- Design Considerations for REST
- Design Considerations for SOAP
- Technology Considerations
- Deployment Considerations
- Design Steps for the Service Layer
- Relevant Design Patterns
- Additional Resources
- Chapter 10: Component Guidelines
- Overview
- General Guidelines for Component Design
- Layered Component Distribution
- Presentation Layer Components
- Services Layer Components
- Business Layer Components
- Data Layer Components
- Crosscutting Components
- Relevant Design Patterns
- patterns & practices Offerings
- Additional Resources
- Chapter 11: Designing Presentation Components viii .NET Application Architecture Guide, 2nd Edition
- Overview
- Step 1 – Understand the UI Requirements
- Step 2 – Determine the UI Type Required
- Step 3 – Choose the UI Technology
- Step 4 – Design the Presentation Components
- User Interface Components
- Presentation Logic Components
- Presentation Model Components
- Step 5 – Determine the Binding Requirements
- Step 6 – Determine the Error Handling Strategy
- Step 7 – Determine the Validation Strategy
- patterns & practices Offerings
- Additional Resources
- Chapter 12: Designing Business Components
- Overview
- Will Use Step 1 – Identify Business Components Your Application
- Step 2 – Make Key Decisions for Business Components
- Step 3 – Choose Appropriate Transaction Support
- Step 4 – Identify How Business Rules Are Handled
- Step 5 – Identify Patterns That Fit the Requirements
- Additional Resources
- Chapter 13: Designing Business Entities
- Overview
- Step 1 – Choose the Representation
- Step 2 – Choose a Design for Business Entities
- Step 3 – Determine Serialization Support
- Domain Driven Design
- Additional Resources
- Chapter 14: Designing Workflow Components
- Overview
- Step 1 – Identify the Workflow Style Using Scenarios
- Step 2 – Choose an Authoring Mode
- Step 3 – Determine How Rules Will Be Handled
- Step 4 – Choose a Workflow Solution.
- Step 5 – Design Business Components to Support Workflow
- Windows Workflow Foundation.
- BizTalk Server
- BizTalk with ESB
- Using Windows Workflow Foundation and BizTalk Together
- Additional Resources
- Chapter 15: Designing Data Components Contents ix
- Overview
- Step 1 – Choose a Data Access Technology
- Step 2 – Choose How to Retrieve and Persist Business Objects from the Data Store
- Step 3 –Determine How to Connect to the Data Source
- Connections
- Connection Pooling
- Transactions and Concurrency
- Step 4 – Determine Strategies for Handling Data Source Errors
- Exceptions
- Retry Logic
- Timeouts
- Step 5 – Design Service Agent Objects (Optional).
- Additional Resources
- Chapter 16: Quality Attributes
- Overview
- Common Quality Attributes
- Availability
- Conceptual Integrity
- Interoperability
- Maintainability
- Manageability
- Performance
- Reliability
- Reusability
- Scalability.
- Security
- Supportability
- Testability
- User Experience / Usability
- Additional Resources
- Chapter 17: Crosscutting Concerns
- Overview
- General Design Considerations
- Specific Design Issues
- Authentication
- Authorization
- Caching
- Communication
- Configuration Management
- Exception Management
- Logging and Instrumentation
- State Management x .NET Application Architecture Guide, 2nd Edition
- Validation
- Design Steps for Caching
- Step 1 – Determine the Data to Cache
- Step 2 – Determine Where to Cache Data
- Step 3 – Determine the Format of Your Data to Cache
- Step 4 – Determine a Suitable Cache Management Strategy
- Step 5 – Determine How to Load the Cache Data
- Design Steps for Exception Management
- Step 1 – Identify Exceptions That You Want to Handle.
- Step 2 – Determine Your Exception Detection Strategy
- Step 3 – Determine Your Exception Propagation Strategy
- Step 4 – Determine Your Custom Exception Strategy.
- Step 5 – Determine Appropriate Information to Gather
- Step 6 – Determine Your Exception Logging Strategy
- Step 7 – Determine Your Exception Notification Strategy
- Step 8 – Determine How to Handle Unhandled Exceptions
- Design Steps for Validating Input and Data
- Step 1 – Identify your Trust Boundaries
- Step 2 – Identify Key Scenarios
- Step 3 – Determine Where to Validate
- Step 4 – Identify Validation Strategies
- Relevant Design Patterns
- patterns & practices Solution Assets
- Additional Resources
- Chapter 18: Communication and Messaging
- Overview
- General Design Guidelines
- Message-Based Communication Guidelines
- Asynchronous vs. Synchronous Communication.
- Coupling and Cohesion
- Data Formats
- Interoperability
- Performance
- State Management
- Contract First Design
- Security Considerations
- Transport Security
- Message Security
- Technology Options
- WCF Technology Options.
- ASMX Technology Options
- Additional Resources
- Chapter 19: Physical Tiers and Deployment Contents xi
- Overview
- Distributed and Nondistributed Deployment
- Nondistributed Deployment
- Distributed Deployment
- Performance and Design Considerations for Distributed Environments
- Deployment Recommendations for Locating Components within a Distributed
- Distributed Deployment Patterns
- Client-Server Deployment
- n -Tier Deployment
- 2-Tier Deployment
- 3-Tier Deployment
- 4-Tier Deployment
- Web Application Deployment
- Rich Internet Application Deployment
- Rich Client Application Deployment
- Performance Patterns
- Load-balanced Cluster
- Affinity and User Sessions
- Application Farms
- Reliability Patterns
- Security Patterns
- Impersonation/Delegation
- Trusted Subsystem
- Multiple Trusted Service Identities
- Scale Up and Scale Out
- Considerations for Scaling Up
- Designing to Support Scale Out
- Design Implications and Tradeoffs.
- Network Infrastructure Security Considerations
- Manageability Considerations
- Relevant Design Patterns
- Additional Resources
- Application Archetypes xii .NET Application Architecture Guide, 2nd Edition
- Chapter 20: Choosing an Application Type
- Overview
- Application Archetypes Summary
- Application Type Considerations
- Mobile Application Archetype
- Rich Client Application Archetype
- Rich Internet Application Archetype
- Service Archetype
- Web Application Archetype
- Chapter 21: Designing Web Applications
- Overview
- General Design Considerations
- Specific Design Issues
- Application Request Processing
- Authentication
- Authorization
- Caching
- Exception Management
- Logging and Instrumentation
- Navigation
- Page Layout
- Page Rendering
- Session Management
- Validation
- Design Considerations for Layers
- Presentation Layer
- Business Layer
- Data Layer
- Service Layer
- Testing and Testability Considerations
- Technology Considerations
- Deployment Considerations
- NonDistributed Deployment
- Distributed Deployment
- Load Balancing
- Relevant Design Patterns
- Additional Resources
- Chapter 22: Designing Rich Client Applications Contents xiii
- Overview
- General Design Considerations
- Specific Design Issues
- Business Layer
- Communication
- Composition.
- Configuration Management
- Data Access
- Exception Management
- Maintainability
- Presentation Layer
- State Management
- Workflow
- Security Considerations
- Data Handling Considerations
- Caching Data
- Data Concurrency
- Data Binding
- Offline/Occasionally Connected Considerations
- Technology Considerations
- Deployment Considerations
- Stand-alone Deployment
- Client/Server Deployment
- N-Tier Deployment
- Deployment Technologies
- Relevant Design Patterns
- Additional Resources
- Chapter 23: Designing Rich Internet Applications
- Overview
- General Design Considerations
- Specific Design Issues
- Business Layer
- Caching
- Communication
- Composition.
- Data Access
- Exception Management
- Logging. xiv .NET Application Architecture Guide, 2nd Edition
- Media and Graphics
- Mobile
- Portability
- Presentation
- State Management
- Validation
- Security Considerations
- Data Handling Considerations
- Technology Considerations
- Deployment Considerations
- Installation of the RIA Plug-In
- Distributed Deployment
- Load Balancing
- Web Farm Considerations
- Relevant Design Patterns
- Additional Resources
- Chapter 24: Designing Mobile Applications
- Overview
- General Design Considerations
- Specific Design Issues
- Authentication and Authorization
- Caching
- Communication
- Configuration Management
- Data Access
- Device Specifics
- Exception Management
- Logging.
- Porting Applications
- Power Management
- Synchronization
- Testing
- User Interface
- Validation
- Technology Considerations
- Microsoft Silverlight for Mobile.
- .NET Compact Framework
- Windows Mobile
- Windows Embedded
- Deployment Considerations
- Relevant Design Patterns
- Additional Resources
- Chapter 25: Designing Service Applications Contents xv
- Overview
- General Design Considerations
- Specific Design Issues
- Authentication
- Authorization
- Business Layer
- Communication
- Data Layer
- Exception Management
- Message Construction
- Message Endpoint
- Message Protection
- Message Transformation
- Message Exchange Patterns
- Representational State Transfer
- Service Layer
- SOAP
- Validation
- Technology Considerations
- Deployment Considerations
- Relevant Design Patterns
- Additional Resources
- Chapter 26: Designing Hosted and Cloud Services
- Overview
- Cloud Computing
- Common Vocabulary for Hosted and Cloud Services
- Benefits of Cloud Applications
- Benefits for ISVs and Service Hosts
- Benefits for Enterprise Service Consumers
- Design Issues
- Data Isolation and Sharing
- Data Security
- Data Storage and Extensibility
- Identity Management
- Multi-tenancy
- On-premises or Off-premises, Build or Buy
- Performance
- Service Composition
- Service Integration
- Service Management
- Relevant Design Patterns
- Additional Resources
- Chapter 27: Designing Office Business Applications xvi .NET Application Architecture Guide, 2nd Edition
- Overview
- Components of an Office Business Application
- Key Scenarios for Office Business Applications
- Enterprise Content Management
- Business Intelligence
- Unified Messaging
- Common OBA Patterns
- Extended Reach Channel
- Document Integration
- Document Workflow
- Composite UI
- Data Consolidation (Discovery Navigation)
- Collaboration
- Notifications and Tasks
- General Design Considerations
- Security Considerations
- Deployment Considerations
- Relevant Design Patterns
- Additional Resources
- Chapter 28: Designing SharePoint LOB Applications
- Overview
- Logical Layers of a SharePoint LOB Application
- Physical Tier Deployment
- Key Scenarios and Features
- General Design Considerations
- Specific Design Issues
- Business Data Catalog
- Document and Content Storage
- Excel Services
- InfoPath Form Services
- SharePoint Object Model
- Web Parts
- Workflow
- Technology Considerations
- Deployment Considerations
- Relevant Design Patterns
- Additional Resources
- Appendices Contents xvii
- Appendix A: The Microsoft Application Platform
- Overview
- Finding Information and Resources
- How Microsoft Organizes Technical Information on the Web
- Microsoft Developer Network
- Microsoft TechNet
- The .NET Framework
- Common Language Runtime
- Data Access
- Mobile Applications
- Rich Client
- Rich Internet Application
- Services
- Workflow
- Web Applications
- Web Server – Internet Information Services
- Database Server – SQL Server
- Visual Studio Development Environment
- Other Tools and Libraries
- patterns & practices Solution Assets
- Additional Resources
- Appendix B: Presentation Technology Matrix
- Overview
- Presentation Technologies Summary
- Mobile Applications
- Rich Client Applications
- Rich Internet Applications
- Web Applications
- Benefits and Considerations Matrix
- Mobile Applications
- Rich Client Applications
- Rich Internet Applications
- Web Applications
- Common Scenarios and Solutions
- Mobile Applications
- Rich Client Applications
- Rich Internet Applications
- Web Applications
- Additional Resources
- Appendix C: Data Access Technology Matrix xviii .NET Application Architecture Guide, 2nd Edition
- Overview
- Data Access Technologies Summary
- Benefits and Considerations Matrix
- Object-Relational Data Access
- Disconnected and Offline
- SOA/Service Scenarios
- N-Tier and General
- General Recommendations.
- Common Scenarios and Solutions
- LINQ to SQL Considerations
- Mobile Considerations
- Additional Resources
- Appendix D: Integration Technology Matrix
- Overview
- Integration Technologies Summary
- Benefits and Considerations Matrix
- Common Scenarios and Solutions
- Additional Resources
- Appendix E: Workflow Technology Matrix
- Overview
- Workflow Technologies Summary
- Human Workflow vs. System Workflow
- Benefits and Considerations Matrix
- Common Scenarios and Solutions
- Additional Resources
- Appendix F: patterns & practices Enterprise Library
- Overview
- Goals of Enterprise Library
- What’s Included in Enterprise Library.
- Caching Application Block
- Key Scenarios
- When to Use
- Considerations
- Cryptography Application Block.
- Key Scenarios
- When to Use
- Considerations
- Data Access Application Block Contents xix
- Key Scenarios
- When to Use
- Considerations
- Exception Handling Application Block
- Key Scenarios
- When to Use
- Logging Application Block
- Key Scenarios
- When to Use
- Considerations
- Policy Injection Application Block
- Key Scenarios
- When to Use
- Considerations
- Security Application Block
- Key Scenarios
- When to Use
- Considerations
- Unity Application Block
- Key Scenarios
- When to Use
- Considerations
- Validation Application Block
- Key Scenarios
- When to Use
- Considerations
- Additional Resources
- Appendix G: patterns & practices Pattern Catalog
- Composite Application Guidance for WPF
- Data Movement Patterns
- Enterprise Solution Patterns
- Integration Patterns
- Web Services Security Patterns
- Additional Resources
- Index