Extending Design Patterns into RIA
Macromedia, Inc.
www.macromedia.com
Table of Contents
Many developers use design patterns as a way to solve recurring problems. With the emergence of new technologies, such as Rich Internet Applications, you have the opportunity to architect more responsive applications that better reflect users needs. In doing so, some of the patterns you use to describe traditional server-based applications change to accommodate a more powerful client. The resulting change is evolutionary, however, and much of what you use today still applies in this new model. This article explores the differences between traditional server-based and Rich Internet Application models and describes high-level design patterns common to them. Later articles will look more closely at specific design patterns and how to apply them to create more powerful rich client applications.
Why Rich?
Rich Internet Applications are an evolution of the web development and deployment model. The world wide web and the HTML that built it was originally created to display information and to store random associations to that information. The web deployment model was so useful, however, that organizations soon began to use HTML to create interfaces to applications. In doing so, most applications took a significant step back in usability because of the delivery paradigm, the limited set of user interface controls, and the lack of a client-side data model.
In the early days of web application development, developers spent much of their time solving problems around data transport, resource allocation, business logic, and other infrastructure issues. As technologies to solve these problems matured and standardized, they made a web deployment model for applications much more attractive. While the back end matured however, the presentation layer did not. The advent of Rich Internet Applications allows developers to offer their users the functionality necessary for application interfaces, creating more usable applications and affecting the bottom line by making users more productive, reducing drop out rates and increasing the number of completed transactions.
The concept of richness has two aspects to it, richness in data model and richness in user interface. Rich in data means the user interface can represent and manipulate a more sophisticated data model residing inside of the client, one which can handle client-side computation and sending and receiving of data asynchronously. The advantage over pages created on the server and delivered to HTML is that the application resides on the client and provides a better user interaction with less server interaction. Being able to leverage a sophisticated data model on the client allows you to create highly responsive, interactive applications.
Rich also describes a vastly improved interface. HTML offers a restrictive set of user interface controls, whereas an RIA interface allows for inventive interface controls that can intelligently interact with the data model. The traditional Internet model uses a linear design, offering the user a set of choices that they then submit to the server in a batch mode. The user experience is dictated by the limitations of the technology that created it, instead of the goals of the application and the needs of the user. The constant process of server requests and page refreshes has several drawbacks including page latency, deprecated network bandwidth, and increased overhead to implement session or state across connections. With rich user interfaces, you can move from earlier models where server response affects the entire interface, to a model where changes are specific to the area of the application where the request originated. This, in essence, means that interfaces are broken down into individual component areas that are capable of localized change, server interaction, and inter client-side component communication.
The result is that you can now create client interfaces that much better reflect the richness and complexity of the data and logic coming from your application back end.