Architecting Client Applications
(This page is a work in progress)
High Level Architecture
- User Journeys
- Deployment
- UI approaches
- Navigation Model
- Inversion of Control
- Managing third-party dependencies
- Solution structure
Separated Presentation
- Model View Presenter/Supervising Controller
- Model View ViewModel/Presentation Model
- Model View Controller
- Pub/sub Eventing
- Observer pattern
Composition
- Top down composition
- Bottom up composition
- View-based composition
- Model-based composition
- Modular applications
- Plug Ins
Solutions to Common Problems
- Threading
- Validation
- Editing and IsDirty
- Contextual awareness
- Shared Layouts/Master Pages
- Disposability
- Unit testing
- Automated UI testing
- Authentication/authorization
- Enforcing UI standards
- Forms
- Performance and memory management
- Online/offline/limited access mode
- Enabling automation/macros
- Theming
- Help
Enterprise Applications
- Centralized configuration
- Localization
- Designer support
Client Server Applications
- Proxy management
- Routing
- Messaging
- Server events/duplex bindings
- Client vs. Server side domain models
- Sharing code between Client and Server
- Sharing validation between Client and Server
Development processes
- View specifications
- Designer/developer interaction
- Migration
Cross Cutting Concerns
- Logging
- Exception management
- Caching
Appendix:
- Coding standards