Alfresco is a leading open source CMS. It has various modules to cover different aspects of Enterprise Content Management which includes Document Management Module, Web Content Management Module, Alfresco Share (for collaboration platform), and Record Management Module. I am going to discuss about Alfresco Share which is introduces in Alfresco 3.3 version.
Alfresco share is created on top of Spring Surf framework. It provides a rich web-based collaboration environment for managing documents, wiki content, blogs and more. Share leverages the Alfresco repository to provide content services and utilizes the Alfresco Surf (presentation tier technology) Platform (only up to version 3.3) to provide the underlying presentation framework. Alfresco Share provides out of the box web client templates for creating social networking sites that use a rich library of downloadable and shareable themes, components, templates, and application logic. Spring Surf is a scriptable Web framework that powers the presentation tier rendering capabilities of applications in the Alfresco application suite. These include Alfresco Share, Alfresco Records Management and both authoring and presentation tools for Alfresco Web Content Management. It is developed by Alfresco in collaboration with Springsource in 2010 the main idea was to create light weigh presentation tier where controllers and views are build using Scripts. Surf provides way to implement web application using server-side scripts and templates which makes it easy to use no JAVA, very light weight, fast development as it saves recompilation time. Spring MVC helps to separate application model, view and controller very competently.
Alfresco share use Alfresco repository to store each and every data. Alfresco share architecture is as shown in figure. For retrieving the data from the repository it use two webscript calls one which is on the Share side called presentation webscript and other is data webscript which resides on the alfresco repository side. Presentation webscript is responsible for rendering the UI on the share side it calls data webscript in the back-end which fetches data from alfresco repository and pass it to presentation webscript.