Alfresco a Java Based Open Source Content Management System is giving stiff competition to its proprietary competitors like Documentum, SharePoint, Oracle UCM etc… who are dominating players in the ECM Market.
There are various Concrete reasons which makes Alfresco more in most of the requirements.
- It uses best-of-breed open source technologies such as Spring, Lucene, Solr, iBatis, OpenOffice and LibreOffice.
- It supports modern standards such as CMIS and REST.
- It is easily extendable with the use of light weight webscripts.
- It exposes repository which makes it easy to work with content using standards such as CIFS, NFS, FTP, WebDAV, SharePoint Protocol, SMTP, and IMAP.
- It is the only CMS which support the hybrid architecture for cloud.
Here I wanted elucidate first point only. How these various technologies are embedded in Alfresco to make it best of breed product.
The main requirement for any good CMS is that it should be extensible and configurable Alfresco achieved this using the Spring Framework, a de-facto standard enterprise open source framework. Alfresco has made Spring the core foundation of its architecture. Alfresco components are declaratively configured and bound together using Spring configuration. Aspect-oriented programming features of Spring allows the weaving of infrastructure concerns such as Transactions and Security into components without duplicating functionality. Environment touch points are abstracted, for example database connections. If there’s a feature of Alfresco you don’t need, you can disable it through configuration, providing a lighter and possibly faster application. If there’s a feature you decide to re-implement, you can easily swap in the new functionality through Spring configuration.
Alfresco also use Spring Surf Framework to implement the Alfresco Share which provide the collaboration platform like sites, wiki, blogs etc… on top of Alfresco Repository.
Lucene and Solr
For any CMS it must include powerful search engine which will take care of indexing and searching of content. Lucene has been widely recognized for its utility in the implementation of Internet search engines and local, single-site searching. It is suitable for any application which requires full text indexing and searching capabilities. Alfresco also included it for the same purpose. Whenever any content is uploaded or modified in the Alfresco Lucene will index its content and metadata to make it searchable.
Alfresco search has been moved into a sub-system with a “solr” and “lucene” implementation.
Solr is actually project which was developed by Apache Lucene which was letter included in the Alfresco on top of Lucene.
The Alfresco Solr Search sub-system supports the same query languages as the embedded Lucene sub-system. The same fields (ID, PARENT, properties) are also available. The only minor difference is that Solr only supports the opencmis based CMIS query language.
Its major features include powerful full-text search, hit highlighting, faceted search, near real-time indexing, dynamic clustering, database integration, rich document (e.g., Word, PDF) handling, and geospatial search. Solr is highly reliable, scalable and fault tolerant, providing distributed indexing, replication and load-balanced querying, automated failover and recovery, centralized configuration and more. Solr powers the search and navigation features of many of the world’s largest internet sites.
In the earlier versions Alfresco has used Hibernate for ORM and Data Access Layer but as the size of Alfresco deployments has grown, it’s become more important for Alfresco to control the interaction between the application and the underlying database to ensure this is optimized for most of use cases. In Alfresco 3.4, they have moved away from using the generalized capabilities provided by Hibernate to a native mapping and data access layer developed by Alfresco using Apache iBatis. The new approach provides us with a much greater level of control over the data access layer which will ensure it continues to scale and support the very large repositories and enterprise deployments that Alfresco is increasingly seeing.
Alfresco uses openOffice for content transformation. We can use either embedded Openoffice or the one which is available in the remote server (that is the beauty of Alfresco everything is loosely coupled). When you create rule for transforming content from one of the format to another Openoffice instance will be working behind the scene.
That will certainly give you some idea about why Alfresco is grabbling the attentions in ECM market. Hope that it will also help you in opting for your ECMS.