It's Census Time!

No we're not going to ask you any questions about your age, race or income. This is an application architecture census. Let me explain.

As I mentioned the other day, we've started work on a new release of the Application Architecture for .NET guide. Our current idea for organizing this guide is to anchor it around a number of common "application scenarios" that provide an end-to-end description of common application types. From there we will decompose the application scenarios into sub-domains (many of which will be shared across multiple scenarios) and provide guidance around design and implementation.

In order to do this, we need to come up with a taxonomy of common application types (not to be confused with taxidermy, which is something different altogether). This task has definitely done before. So far in p&p we've gone with a deliberately simple taxonomy which divides the world of applications into "services" and different styles of "clients" (smart, web, mobile). The advantage of such a simple taxonomy is that it's easy to fit most applications into one of these categories, but it also means that we don't adequately capture the range of variability within each type, nor have we done much to show how larger systems are comprised of these smaller applications and services. There are also examples of more complex application taxonomies, such as IBM's "Patterns for e-Business".

While we will definitely take a look at some of the existing application taxonomies, I thought it might be fun and valuable to do a bit of a reality check to find out what kinds of applications are really being built. To take part in this census, all you need to do is to respond to this blog with a one-paragraph description of the last significant .NET (or partially .NET) application you worked on. We're not after any of your trade secrets here, instead we'd just like to hear about the architecturally significant aspects of the application. Here's an example of the type of thing I had in mind:

A .NET Compact Framework application running on Windows Mobile Pocket PCs is used for data entry. This information is stored in a local SQL CE database on the device. The application connects to an internally-hosted server application using web services to upload the data. The service is hosted in IIS and exposes a WCF endpoint. It is hosted on a horizontal cluster for load balancing and redundancy. The application applies some security and business rules over the data before persisting it to an Oracle database that is running inside the firewall.

This census isn't going to result in any improvements to your local highways or facilities, but we hope you'll take some time to share this information to produce a better Application Architecture Guide for future projects. As always, thanks for sharing - I'm sure your mother would be proud!