Ixxus Web Framework
Matt Dunn, UI Developer 19 Feb 2009
The Ixxus Web Framework provides a robust starting point for creating rich, dynamic websites. The framework is designed using an easy to maintain MVC style architecture that is flexible enough to integrate many different technologies depending on the required solution.
There is a strong emphasis on creating clean, semantic XHTML mark-up from content either created by a CMS or by hand. It is important to ensure that any richly formatted content created from a CMS can be managed easily to fit into the branding and design of the website without sacrificing usability, accessibility or flexibility of the content creator.
To achieve this, content is maintained as XML documents which are rendered by the view using XSLT. This gives a very clear separation between the content and the rendition and provides an easy mechanism for rapidly building websites or to provide content to different channels such as RSS feeds, email, content for catalogues, brochures or magazines, etc.
Core Technologies
The Ixxus Web Framework uses a number of open source and standards based core technologies. This allows flexibility when choosing software and hardware for the web server.
- PHP 5, fully object oriented framework
- XSLT
- Apache (or IIS)
- JavaScript (fully OO library built around jQuery)
Additional Technologies
Where possible or appropriate, existing technologies have been incorporated into the framework. These can be replaced with other technologies as required. For example...
...searching with SOLR
One example of an open source technology used within the framework is SOLR, based on Lucene. SOLR provides powerful search capabilities with ‘out of the box’ functionality for:
- Did you mean?
- Phonetic search
- Spelling correction
- Highlighted search terms in the content
- Facetted search
- Index and query time document boosting
All these features can easily be harnessed and configured within the framework.
XML Data Source
Full support is built in for processing/searching/combining XML documents that can be transformed into renditions by the View (e.g. XHTML, RSS, HTML emails, etc.)
Core Framework Architecture
The current version of the framework comes with a file system XML service layer. New service layers can easily be developed to work with other technologies, such as an XML database (e.g. eXist or Mark Logic) or other databases (e.g. SQL Server or MySQL).
Below is a high level architecture diagram of the framework. In this example, Apache is used as the web server which uses rewrite rules to send the appropriate data to the controller, optionally using a front controller pattern.
The controller can make use of any of the available components, such as navigation, and can initiate calls through to the service layer to retrieve data as required.
The service layer has an additional layer of abstraction (data source layer) to allow services to be agnostic to the actual data source itself. This makes it relatively easy to replace the data source with, for example, an XML database, MySQL or SQL Server connection without having to change any of the code in the layers above.
An example architecture using Alfresco CMS and SOLR
The framework is designed with a high level of abstraction to allow different technologies to be used for different parts of the system. This is an example implementation using Alfresco for CM, a file system XML data source and SOLR for searching.
Although Alfresco is used in this example for the CMS, there are no dependencies on it from within the framework as it is completely decoupled. Any CMS, such as Percussion, capable of producing XML can be used with this data source. Other data sources can be created to work with other technologies.

In this example, Alfresco publishes the content directly onto the web server file system. The XML data services use an adapter to access these XML files directly to return XML documents. The XML is then transformed into a rendition (e.g. XHTML strict, RSS) by the View using XSLT.





Comments
Be the first to comment.
Add your comment