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
A picture of me

Welcome, my name is Paul Stovell. I live in Brisbane and work on Octopus Deploy, an automated deployment tool for .NET applications.

Prior to founding Octopus Deploy, I worked for an investment bank in London building WPF applications, and before that I worked for Readify, an Australian .NET consulting firm. I also worked on a number of open source projects and was an active user group presenter. I was a Microsoft MVP for WPF from 2006 to 2013.