About the support for client-side mobile web UI architecture in this Beta

This beta includes some initial support for a "client-side" mobile web architecture. In this architecture, the final HTML for a page is assembled by JavaScript in the browser. The JavaScript code takes HTML page templates (which don't include any data), obtains the data from the server via REST/JSON service calls, then applies the data to the page template. This contrasts with the server-side rendering which is the default mode in Web Experience Factory, in which the final HTML (including data) is rendered on the server. The resulting pages for client-side mode will often look to the user very much the same as pages generated with server-side rendering, but this client-side architecture can have these potential performance and scalability benefits:

Reduced server processing.

Improved caching on client, since HTML Client Template pages can be cached without data.

This client-side architecture also works well with Dojo Mobile rendering capabilities, and there is automated support for Dojo Mobile in this Beta release. You can see this in some of the samples that are posted on the wiki.

Here is a picture contrasting the server-side rendering mode and the client-side rendering mode.

There are a few caveats that do come with this client-side support:

The set of builders available for client-side applications is much smaller than the set available for server-side. So if you want the complete set of Web Experience Factory features you will need to stick with the standard server-side mode, which is the default. In your service provider models, however, you can use the complete set of data access, service, and transformation builders. When you have a client-side consumer model (which uses Service Consumer builder), all the data service operations are automatically REST-enabled for use by the client-side code.

Client-side mode is intended primarily for development of applications for mobile devices, and desktop-based applications are not tested or supported. The list of tested mobile devices is the same as for server-side mobile applications.

You can't mix client-side mode and server-side mode in a single model. In fact the only way to create a client-side model is to start with one of the two client-side wizards. Then when you're working with a client-side model, the builder picker will only include the builders that support client-side mode.

If you have comments on the client-side features, or on any aspect of the Beta, you can post them as comments here, or you can post to the Web Experience Factory Best Practices developerWorks forum.