The networked application pattern: an emerging RIA design pattern
Traditional web application: sends a request, application server does a bunch of stuff, server returns HTML. Bad.
Networked application = good. Make a request to a web server or CDN. static content. Sends back an application - code - to run in the browser. App uses various frameworks, but code runs on client. Now app makes request to app server, server sends back data.
Why? one reason: architecture. 1998 - hello world, presentation and app on server. 2003: ajax presentation spread between server and client. 2006: RIA - presentation on client only. Another reason: performance. non-varying content can be cached at the network edge. Saves money (cpu power, less bandwidth used). Mobility - app can be rehosted on other servers, or on the desktop (Air).
Solution: Flex? Good: MXML (declarative); ActionScript (ECMAScript, OO, inheritance); Flash engine good for graphics; tool support; browser independence; fast evolving (75% penetration of new Flash player version in six months); good for polished UI's; support for developer/designer collaboration workflow; speed (static typing allows better optimisation); better GC; support for cross-domain scripting using declarative policy file (
crossdomain.xml). Bad: licence costs; hard to find experienced developers.
Also consider MS Silverlight. MS looked at Flex, kept the best bits and fixed the obvious problems. JavaFX – good for 3d API's. Both Silverlight and JavaFX have questions over deployment/penetration.
Acronyms: SOUI (service-oriented UI), SOFEA (service oriented front-end architecture)
Question (by me): "doesn't DOM-manipulation a la Ajax integrate better with the browser model (bookmarks, history, copy-paste, etc)? Answer: not really. Flex has lots of API support for browswer integration [I didn't manage to note down the long list of things it can do]. All RIA's have some difficulty with the history model of page-based browsing, though there are workarounds.
Summary: entertaining speaker with a nice summary of the features of the languages. Clear which solutions he was advocating! I would have liked a bit more on the architecture of the networked-application, though that was probably asking too much for talk this long. Will check out his blog to see how much of that is covered there.