There is No Application Model

One of the whimsical things that members of the Avalon Application Model team like to say is that “Avalon doesn’t have an application model.” If that is truly the case, have we utterly failed at our jobs? Should we just go home now? Or perhaps take a vacation until Avalon ships?

Rene MagritteWell, not quite. Unfortunately that long vacation may need to wait until after we ship. ;)

In fact, the absence of what many think of as a traditional application model is the result of a deliberate decision that was made back in the early days of Avalon. One of the things we have intentionally tried to do is avoid making cumbersome decisions about window management, application data, UI model, server-client interactions, and other aspects of development that are often associated with an “application model.” Our guiding principle is to keep the app model low policy, and to stay out of your way.

As such, we’ve aimed to provide a set of application-level services that developers can opt into as they choose. A few examples:

  • The Application object is a convenience for developers, which provides some object model for window management, starts and stops the message loop, enables simple system interaction, and enables storage of app-wide state (either via the Properties collection or by providing custom properties when sub-classing).
  • We provide a built-in framework for navigation, so that it’s painlessly simple to create an application that can be browsed like a website (think TurboTax or Microsoft Money). App authors may choose to use this UI metaphor exclusively, limit it to certain aspects of the app (e.g. wizards), or not to use it at all.
  • There are multiple options for storing app state: storing files on the filesystem, using Isolated Storage, using .config settings, using cookies, or even (gasp!) the registry.

Other examples abound, but the above should give you an idea of the types of decisions we made.

I love this simple model, because it doesn’t impose any unnecessary constraints. We don’t assume to know too much about how you want these things to work, we just give you some simple tools that you can opt into and customize at will. We also know that there will be scenarios where a much more specific application model is required. However, these will be verticals, and any Avalon customer should be able to write her own application framework that is suited to her specific needs.

2 thoughts on “There is No Application Model”

  1. You said: One of the whimsical things that members of the Avalon Application Model team like to say is that “Avalon doesn’t have an application model.”

    Hey, wait a minute! That’s an Indigo joke! :)

Comments are closed.