arrow-left arrow-right brightness-2 chevron-left chevron-right circle-half-full dots-horizontal facebook-box facebook loader magnify menu-down RSS star Twitter twitter GitHub white-balance-sunny window-close
Architecting Client Applications
1 min read

Architecting Client Applications

This is an old post and doesn't necessarily reflect my current thinking on a topic, and some links or images may not work. The text is preserved here for posterity.

(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


  • 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


  • Coding standards
Paul Stovell's Blog

Hello, I'm Paul Stovell

I'm a Brisbane-based software developer, and founder of Octopus Deploy, a DevOps automation software company. This is my personal blog where I write about my journey with Octopus and software development.

I write new blog posts about once a month. Subscribe and I'll send you an email when I publish something new.