AnsweredAssumed Answered

Michael Uzquiano 'UZI' : Web Framework 3.0

Question asked by rdanner on Apr 2, 2008
Latest reply on Apr 2, 2008 by rivarola
Reposting Uzi's blog on the web framework here:

Wiki Doc for Web Framework:
http://wiki.alfresco.com/wiki/Web_Framework_3.0

Michael writes in his blog:
http://blogs.alfresco.com/uzi/?p=4

Over the past few weeks, I’ve spent a lot of time migrating core code from the Dynamic Website project into Alfresco Web Framework 3.0.

As many of you know, the Web Framework 3.0 work is a new project that was started not too long ago. It is an entirely separate web-tier project that provides a lightweight backbone for building web applications and web sites. It includes Alfresco Web Scripts and Freemarker processing engines and now also includes a ready-to-go dispatcher, object model and web script APIs for building your own web sites.

The Web Framework 3.0 project forms the foundation at Alfresco for several initiatives. The two most important ones are the Web Client 3.0 and the Alfresco Network products. These two applications will use the Web Framework 3.0 project as a foundation and then build upon it to deliver the end-user applications.

One of the best things about this whole process was that we were able to take a community-built project (Dynamic Website) and pull it apart to separate out the very best bits. As such, the Web Framework 3.0 now includes:

    * A rich XML object model for describing navigation, pages, templates, components, component bindings, content associations and request context.
    * A lightweight servlet-based dispatcher that quickly assembles your web application by consulting the XML configured for request states.
    * Interfaces for request context factories, page mappers, link builders, persistence and more. These elements and more are driven from configuration files, allowing you to plug in your own dispatching behaviors (for instance, URL mapping behaviors).
    * The full Alfresco Web Script and Freemarker Processing engine.
    * Enhanced support within Web Scripts to make one or more remote calls to server endpoints to fetch data (JSON, XML) and merge into data sets for downstream processing. Think of the Web Script Engine as an aggregator of remote services on behalf of the client end user.
    * Support for templates / layouts written in Java, HTML, JSP, Freemarker or as WebScripts (Freemarker with a Javascript behavior). That’s the list, so far. There will also soon be support for dynamic, drag and drop layout assembly. This is something that was in Dynamic Website that I have not yet ported. But I will!
    * Support for page components written in Java, HTML, JSP or as WebScripts.
    * Several prebundled web components. So far, these include things like Markup Components, Image Components, Navigation Components and the like. These are being assembled into a “Web Component Library” from which you will be able to draw more advanced components like Google Gadgets, Maps, Newsfeeds and more.
    * Sample implementations provided out of the box for a Public Web Site, Intranet and Project workspace. These provide reference implementations to help you get up and running quickly.
    * The ability to self-assemble your own Alfresco Web application and Web Experience.

It’s very exciting stuff and progress is moving swiftly!

One of the very interesting and fun to solve problems in doing a migration like this is that you have to figure out where to “draw the line”. The goal is to keep the framework as lightweight and snappy as possible while still providing the efficiency gains that come from ease-of-use.

To do so, I feel we made several good decisions.

First, we kept the Web Script Framework isolated and on its own. Thus, folks who want to just build the Web Script engine and produce a WAR file with the Web Script engine standalone can still do so.

Second, we created the Web Framework project and ported over only the dispatcher and model pieces from Dynamic Website. Thus, the Web Framework itself can build and remains lightweight. It produces a fairly small JAR file.

Finally, we retained within the Dynamic Website project all of the bits that make up the user interface. Thus, Dynamic Website will continue into the future. It will be one of many applications that utilize Web Framework 3.0.

Over the next few weeks, attention will shift to focus on Web Client 3.0 and the application of this framework toward Project Spaces, Document libraries, Activity tracking and group workspaces.  Very cool stuff!

Stay tuned for more news!

Outcomes