转载自 http://chooli.iteye.com/blog/636689
这里简单地对Alfresco项目进行一下介绍吧,很多人可能对于Alfresco能做什么,对比别的开源产品,有什么特点可能不是很了解。
产品的定位
可以看到,Alfresco与Spring的关系十分紧密,对于开发人员特别是熟悉Spring框架的开发者,Alfresco可以让你更容易开发各种企业级的web应用,不过即使不了解Spring,由于Alfresco支持了许多标准接口,开发者也可以根据自己的技术来做Web开发。
为什么选择Alfresco
现在,大概没有Web项目开发是完全从头开始,而不去使用框架的,当然,如果自己的团队确实是存在许多技术牛人,或者时间和金钱充裕,使用自己的框架开发也是可以的。不过,考虑到需要不断扩展功能,并善加利用第三方的资源,那么,一个广泛被接受的框架就是必然的选择。
对于Java的开发者,我们可以找到一大堆的web开源开发框架,看一看以下的内容就知道
http://en.wikipedia.org/wiki/Comparison_of_web_application_frameworks
由于web开发,特别是面向互联网用户的企业网站开发,日渐成为愈来愈开放的市场下的一个强劲需求,许多项目开发者希望有一个功能完善、界面友好、开发容易的CMS框架,这样,既可以不断地增加网页内容,又可以开发五花八门的功能,扩展更可以不受限制。
Alfresco的基础功能是repository service,它可以为企业文档管理提供完善的功能,并照顾到企业多种用户角色的需求,与Window文件系统及文字处理软件word等进行无缝连接。你完全可以用它作为一个高级的文件共享服务器,并使用Alfresco中的工作流、讨论、权限管理等功能,为企业办公提供完善的公文管理服务。
当你使用Alfresco的文档管理服务,你就有了向Alfresco WCM发布内容的能力了,Alfresco的接口可以方便地读取文档的内容,并通过模版来产生页面。由于Alfresco WCM支持标准的JSP/Servlet开发,你可以使用任何一种熟悉的技术来开发网站的页面。
Alfresco与Spring的关系十分紧密,后者是目前J2EE开发中使用最广泛、功能最完善的框架之一,这就意味着可以直接调用spring开发的系统功能,如:重用一些spring bean;所以,使用Alfresco开发的网站与其他Java开发的系统进行整合是很容易做到的事
要使用Alfresco做开发,首先了解一下Alfresco的整个系统架构,在此之前,最好了解一下Java开发的基本知识和Spring框架。当然,你不必是这方面的高手,只要了解一下就行,以免这里介绍的内容你理解不了。
B/S结构
在安装了Alfresco后,Alfresco的运行结构是B/S式的,你可以使用Web浏览器打开应用界面并登陆进入系统里。整个系统如下图所示:
在Web应用程序服务器里(Web Application Server, 如:Tomecat, JBoss),Alfresco的应用程序(Alfresco Applications)包括了文档管理(DM)、Web内容管理(WCM)以及记录管理(RM)。这些应用分别是面向不同的企业内容的管理服务,
所有的Alfresco应用程序则是基于Alfresco Repository服务之上开发的,Alfresco Repository是一个核心程序。
Repository是用于存储各种数据资源的服务,它的作用是把实际的各种不同格式的数据转化成数据库或文件系统可以存储的数据,是一种基于数据库和文件系统之上的应用。
Alfresco Repository提供了一系列可以通过不同接口调用的数据存储服务,如:内容存储、查询、版本控制、内容转换/复制/编辑等,这些基础的服务可以为不同的应用系统提供支持。Alfresco Repository的设计目标是为了能够针对不同的内容管理方案提供可以重用的组件,因此,了解Repository的基本概念以及它的开发结构、可伸缩性和灵活性,对于正确和高效地构建内容管理系统是十分重要的。
Alfresco Repository的组件及服务
Alfresco Repository是基于Java开源框架Spring开发的,并与Spring整合得很深,你可以使用Spring的配置知识来管理Alfresco Repository的运行。
在设计上,Alfresco Repository是由组件(component)和服务(service)组成的。组件的作用是把内容的对象转换成独立而不重复的功能对象,并可以根据需要方便的添加和删除;而服务的作用是可以为不同的应用提供调用接口,并实施安全管理;
服务与组件的相互耦合,是利用了Spring的框架功能,反向控制及面向切面的服务。如果你懂得如何配置Spring bean的话,你就可以容易地对Alfresco Repository的各种组件或服务进行灵活配置了。实际上,你可以在Spring的框架下为Alfresco Repository添加和修改组件及服务,这意味着你可以根据自己的需要升级这个内核或做扩展。
不过,即使不懂得Spring或Alfresco Repository的组件概念,你也可以容易地通过Alfresco的各种接口使用内容管理服务。
三个基本服务
Alfresco Repository的任务是存储和访问内容,这个任务是靠以下三个基本服务提供的:
一般情况下,Alfresco会把元数据存储在关系型数据库里,而内容本身则存储在文件系统中。这很好理解,数据库存储提供高效的查询、事务处理及管理功能,而文件系统则保存比较大的内容数据。这些功能的实现都得益于成熟而强大的开源项目Hibernate和Lucene。通过Hibernate的数据持久化框架,Alfresco的内容存储可以支持任何基于SQL查询的关系型数据库,并实现高速访问缓存和事务处理;而Lucene的使用则可以为Alfresco提供高效的数据查询索引,并可以使用XPath来查询内容。