Jump to content

XRX (web application architecture)

From Wikipedia, the free encyclopedia

This is an old revision of this page, as edited by Dmccreary (talk | contribs) at 13:30, 29 October 2008 (Server Architecture Features). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

In software development XRX is a web application architecture based on XForms, REST and XQuery. XRX applications store data on the web client and on the web server in XML format and do not require a translation between data formats. XRX is considered a simple and elegant application architecture due to the minimal number of translations needed to transport data between client and server systems. The XRX architecture is also tightly coupled to w3c standards (CSS, XHTML 2.0, XPath, XML Schema to ensure XRX applications will be robust in the future.

Overview of XRX

XRX is a "zero translation" application architecture that uses XML to store data in the client web browser, on the application server and in the database server. It is because each of these layers use XML as the same structural data model that XRX applications do not have to translate data structures to and from both object and relational data structures. Because of the lack of need for translation, XRX is considered to have a clean and elegant design. The XRX web application architecture allows developers to focus on the business problem and not the translation problem. XRX benefits from several advances in software technolog:

Client Architectural Features

  • A Model-view controller architecture that separates the model (stored in XML) from the views of an application
  • A single element (xf:submission) for all server submissions
  • An advanced event model (XML_Events) consistent with w3c standards that frees applications from having to deal with vendor-specific event handling
  • A Dependency graph that is used to store the dependency structure of the client controllers. This frees the developer from having to manually update either the model or the views when data changes in an application. This allows spreadsheet-like applications to be created on the client with very little effort.
  • A Declarative (programming) style that allows most client XForms applications to be created using a small set of approximately 20 elements. This allows rich client applications to be created without knowledge of JavaScript or other procedural scripting languages.
  • An easy to extend system for using EXtensible_Bindings_Language

Server Architecture Features

  • Many native XML databases have built-in REST interfaces making each XQuery inherently a RESTful web service
  • A Functional programming model that promotes side-effect free systems that are easier to debug and easier to run on multiple processors
  • An easy-to-extend system using XQuery function and modules

Both Client and Server

  • Consistent use of REST interfaces to exchange data between the client and server for all transfers of data including as-you-type data checking and suggest functions
  • Consistent integration of w3c standards including use of XPath XML Schema data types
  • Consistent integration of w3c standards including use of XPath and XML Schema data types
  • A large library of standard of functions used on both the client and server

Overal Benefits of XRX

One of the principal benefits of the XRX architecture is that it avoids the requirement to "shred" complex data structures into relational structures and then reconstitute the data back into structures when a record is edited on the client.

Another benefits of the XRX Web application architecture is that it avoids most of the problems around the Object-relational impedance mismatch.

Another advantage is that the client developer does not have to learn JavaScript on the client.

Comparison with Traditional Object/Relational Web Application Architectures

Many traditional web application architectures created in the late 1990 were based on middle object tiers and persistence layers that used tabular data streams and relational database systems. Because each of these layers used different structures to store the models the systems required much additional complexity to translate between layers.

History of XRX

Early examples of using a zero-translation architecture in multi-tier systems can be traced back to the rise of object-oriented databases in the 1990s. See OODBMS History

Mark Birbeck suggested that the combination of XForms, XQuery with REST interfaces between the two had many advantages in a meeting to the UK XML User Group in September of 2006 [1] . His presentation was one of the first to specifically suggest that the combination of three technologies: XForms and XQuery with REST interfaces would have surprisingly beneficial benefits. Mark termed this process "Skimming" but that term did not seem to be contagious.

Erik Bruchez of Orbeon spoke at the XML 2007 conference on Boston in December of 2007. [2]. His presentation titled: XForms and the eXist XML database: a perfect couple, Erik showed that many people were discovering synergistic benefits of XForms on the client and XQuery on the server.

The label for XRX was suggested by a blog posting by Dan McCreary on December 14th of 2007 [3] . It was in this article that Dan suggested the need for a contagious meme for the ideas behind the XRX architecture.

Generalizations of XRX

Although XRX was originally intended to connote the use of XForms on the client, REST and an interface and XQuery on the server. Other proponents of XRX generalize the terms to encompass any XML-centric web client and any server that can store XML documents. These generalizations do benefit from a simplified zero-translation architecture but many do not benefit from using declarative systems in the client and functional languages on the server, one of the key aspects to XRX.

See also

References

  1. ^ Birbeck, Mark (2008-09-26). "XForms and XQuery vis REST" (PDF). Retrieved 2008-10-26. {{cite web}}: Check date values in: |date= (help)
  2. ^ Bruchez, Erik (2007-12-04). "XForms and the eXist XML database: a perfect couple". Retrieved 2008-10-26. {{cite web}}: Check date values in: |date= (help)
  3. ^ McCreary, Dan (2007-12-14). "Introducing the XRX Architecture: XForms/REST/XQuery". Retrieved 2008-10-26. {{cite web}}: Check date values in: |date= (help)

Additional Resource