Portal是web应用发展的一个重要趋势,目前几乎所有大的软件厂商都有自己的Portal产品。并且Portal技术已经形成规范。本文对Portal技术和产品进行了分析,目的是为公司产品的规划提供参考。
1 Portal的概念
根据(JSR (Java Specification Request) 168)的定义,Portal是基于web的应用,它主要作为信息系统的展现层,提供个性化、统一登录和内容整合的功能。整合就是将不同来源的信息集中展现在一张网页上。一个Portal可以具有很多个性化参数,用来调整为用户定制的内容。对于不同用户,一个Portal网页可能由多组不同的页面构件-portlet组成,portlet为不同用户生成不同的定制内容。Portal网页的内容如图1所示。Portal网页中的Portlet窗口一般有常规、最大化和最小化三种状态,窗口的状态可以由用户调整。
从上面的定义可以看出,Portal的核心思想是网页个性化,它有两个含义,一是为不同的网页访问者匹配不同的内容,二是为不同的网页访问者提供不同的portlet应用服务,并在所能提供服务的基础上根据访问者的不同相应改变处理流程。
1.1Portal的分类
最初的Portal指的是像YahooLycos这样的Internet门户网站。这些门户网站为用户提供了检索、分类和类似"My Yahoo!"的个性化定制服务,目的是帮助用户更快地找到自己所需要的信息。这样的Portal被称为Public Portal即面向公众的信息门户。
随着web应用的发展,又出现了Vertical Portal和Enterprise Information Portal。Vertical Portal即行业门户,目的是帮助某一行业的商业人员和技术人员找到自已需要的特定行业的商业信息和技术信息。Enterprise Information Portal(EIP)即企业信息门户。目的是帮助企业用户及员工通过统一入口找到分布于企业的各种信息。与Public Portal相似,Vertical Portal和EIP也同样提供了检索、分类和个性化定制服务。
1.2 Portal的价值
从不同的角度出发,对不同的应用来说,Portal所体现的价值是不同的。
首先作为一个网络用户,基于Portal的网站能够为我们更有效的提供信息和服务。虽然目前的Internet为我们提供了大量的信息,但这些信息非常分散并且重复很多。因此有必要建立以行业或专业领域为中心的网站,集中提供某个行业或领域的信息和服务。
对于企业内网系统来说,如果通过Portal与外网集成,将减少网络系统开发和维护的成本。通过企业内部文档和资料的内容管理,可以加强知识的积累和共享。通过建立公告信息,记事本、聊天室等协同工作的工具,可以帮助员工提高工作效率。通过EIP与企业旧有信息系统(如ERP、SCM、POS)的运作结合,可以强化企业的运作效率。
2 Portal厂商及Portlet规范 2.1国外厂商
在EIP发展的后面阶段,随着EIP与应用集成的发展,WEB应用服务器和数据库服务器的提供者、CRM 和ERP的提供者、EAI厂商也加入到EIP厂商的行列。服务器厂商包括IBM,Oracle,BEA,Sybase 以及微软。CRM 和ERP厂商包括BroadVision,Vignette,SAP和PeopleSoft等。EAI厂商象Tibco和WebMethods等。
随着数据仓库工具的普及,商业智能供应商,例如Connos,Business Objects以及Brio等也加入到Portal厂商的行列。它们都提供了集成分析报表与Portal的工具。
2.2 开放源代码项目
除了上面提到的国内外厂商外,一些开放源代码组织也提供了基于JAVA平台的Portal解决方案,这些开源产品有JetSpeed、Jboss nukes、Liferay等。
JetSpeed是Apache组织的一个Portal开源项目, IBM早期的WebSphere Portal Server就是基于JetSpeed进行二次开发的。jcorporate的Expresso(一个基于开放标准的J2EE体系框架)也采用了JetSpeed。
Jboss nukes是基于postnuke、phpnuke等内容管理系统开发的java平台的内容管理系统。由于使用了java,其在响应速度和系统集成能力等方面都要比用和php开发的postnuke、phpnuke等系统出色。
Liferay的portlet配置文件可以*地动态扩展,并使用Apahce Lucene实现全文检索功能。
3 Portal技术分析 3.1 Portlet
JSR-168 Portlet Specifications对Portlet的定义如下:
portlet是基于web的Java组件。它由portlet容器管理,能够处理请求,产生动态内容。portlet被Portal用作为可插拔的用户接口组件,为信息系统提供展现。
由portlet动态产生的内容也被叫做fragment。fragment是遵循某种规则的标记(例如:HTML,XHTML,WML),可与其他的fragment一起建立一个完整的文档。一般一个portlet产生的内容和其他的portlet产生的内容聚集在一起形成Portal网页。
3.2 Portlet 容器
portlet在portlet容器中运行,portlet容器为portlet提供必需的运行环境。portlet容器包含portlet(组件)并且管理它们的生命周期,它也为portlet的参数设置提供持久化的存储。
portlet 容器不是一个类似于 servlet 容器的独立容器。它是在 servlet 容器上通过扩展方式实现的,并重用 servlet 容器提供的功能。
3.3 工作原理
在图8中,portlet的生命周期由portlet容器管理。web端通过由Portal执行的请求/应答机制与portlet进行交互。通常,用户与由portlet产生的内容进行交互,比如通过单击按钮或链接,Portal接收到portlet窗口的动作,随后将portlet产生的内容送至用户操作的portlet窗口。 对不同的用户,一个portlet产生的内容可能会大不一样,这与用户对portlet的设置有关。
portlet容器接收来自Portal的请求并运行它管理的portlet执行请求。portlet容器并不负责聚集portlet产生的内容,处理内容聚集是Portal的职责。Portal和Portlet容器能够被作为单一的应用组件组合在一起,也可以作为一个Portal应用的2个分离的组件。
图8 Portal原理
下面是一个典型的事件序列
一个客户端(例如:一个web浏览器)在被验证之后向Portal发出HTTP请求,Portal接收到请求。
Portal判断请求是否包含与组成门户网站网页的portlet有关的动作。
如果存在与某个portlet相关的动作,Portal请求portlet容器调用portlet处理动作。
Portal通过portlet容器调用portlet,获得被包含在产生的门户网站网页中的内容片段。
Portal将portlet产生的结果聚集于门户网站的网页,然后将网页返回至客户端。