The Emissary Design Pattern and RIAs (Rich Internet Applications)

Here is a first draft of a new presentation.   I gave it a couple of months ago just after TechEd and thought I would share it as I try to write up some of my thoughts on RIAs.  I plan to rework this a bit more and present it again at TechEd Europe.   The talk is titled: "The Emissary Design Pattern and RIAs (Rich Internet Applications)"


The Emissary design pattern was first described in 1999 in the old "Fiefdoms and Emissaries" talk.  The concept of a "fiefdom" is very similar to what we today call a service in a Service Oriented Architecture.  The fiefdom is a separate trust sphere and transactional boundary.   An emissary is a prescriptive pattern for interacting with a service (or fiefdom) which leverages reference data and a deep understanding of the service to prepare requests for service and maximize the chance those requests will comply with the requirements of the service.   An emissary may be richly interactive and anticipate the validation requirements of the service.

The emerging world of RIAs (Rich Internet Applications) is a fascinating blend of a classic smart client and a browser-based web application.   In a RIA app, client code runs in the browser but still must comply with the browser enforced sand-boxing and not cause harm to the host client machine.  Navigation, naming, linking, and much more are being defined in a fashion drawing from both the web style and the client style.  Many of the design issues with RIAs are under discussion today as this support for these applications is emerging.

This talk examines both the emissary design pattern and the nascent space of Rich Internet Applications.  It motivates how one can look to the workflow patterns contained in our parents' use of paper forms for workflow to understand the possibilities of implementing user-centric workflow as shared replicated data.  The talk concludes with some preliminary concepts of a shared and declarative definition of the "paper form" model and its constraints and how these may someday be used in the automatic generation of emissary-based RIA clients.

More RIA stuff soon!

- Pat