Instead of an academic discussion of the design patterns we selected for Cairngorm, we will explain the common high-level challenges that often occur when developing rich Internet applications and how to address these challenges with a Cairngorm development process. While describing the development process, we will also explain the various constituent design patterns used in the Cairngorm framework.
A good technical architect views application development first as a solution to a business problem, second as a system that realizes this solution, third as a technical architecture for the custom software in the system, and finally as the detailed class-level implementation of that technical architecture.
This approach, like the Cairngorm Store approach, gives you clarity from 35,000 feet before a deep dive and race along the terrain at the code level.
From a high level, there are four key challenges that the Adobe Consulting team typically faces, whether building mortgage calculators, stock trading applications, online banks, single-screen checkouts, full e-commerce applications, or interactive maps. These challenges are:
The challenges and requirements for the Cairngorm Store are no different.
In a typical online store, the client presents the products to sell to the customer, the shopping cart remembers what the user purchased, and the user must complete multipage application forms during the checkout process. Throughout this entire process, your application must maintain state on the client.
The single-screen user experience has a number of different on-screen components. It has both graphical and list-based views of the products for sale, detailed product information, a shopping cart that the user can add to or drag products to, and a series of forms that users must fill in to complete their orders. You must architect the view.
There are a number of features that users demand in the application. Users must be able to do the following:
These features drive your development.
Finally, the products that the application sells change as inventory changes. Your application must fetch product information from a server-side infrastructure capable of pulling products from an inventory database. Furthermore, when customers place orders, your application must persist the orders in enterprise systems by committing these orders to a database, SAP, or another back-end system. Your application must integrate with and invoke server-side services.
As you can see, the Cairngorm Store—though unique in its business domain, product selection, and look and feel—is just like any other rich Internet application when considering it in the context of these four key challenges.
In this article, we cover the first of these four key challenges: keeping state on the client.