Portal

来自站长百科
跳转至: 导航、​ 搜索

Portalweb应用发展的一个重要趋势,目前几乎所有大的软件厂商都有自己的Portal产品。并且Portal技术已经形成规范。

完整的Portal通常由Portal服务器、Portlet容器、Portlet构成。

概述[ ]

Portal一词最早是指门户网站。简单讲Portal是一个重要的Web站点,是一个联合的社区,它作为Web应用程序的简单统一的访问点和信息系统的展现层,通过个性化“我的主页(My Home Pages)”为不同用户提供个性化、统一登录和内容整合的服务。

此外Portal还提供了许多有价值的附加功能,如安全性、搜索、协作和工作流等。对最终用户而言,Portal就是一个到所有计算资源的单独访问点。业界认为Portal将会成为下一代的桌面,在Web上为各种客户机设备提供大量的电子商务应用。

根据JSR (Java Specification Request) 168的定义,Portal是基于web的应用,它主要作为信息系统的展现层,提供个性化、统一登录和内容整合的功能。整合就是将不同来源的信息集中展现在一张网页上。一个Portal可以具有很多个性化参数,用来调整为用户定制的内容。

对于不同用户,一个Portal网页可能由多组不同的页面构件-portlet组成,portlet为不同用户生成不同的定制内容。Portal网页中的Portlet窗口一般有常规、最大化和最小化三种状态,窗口的状态可以由用户调整。

随着Web应用的发展,又出现了Vertical Portal和Enterprise Information Portal。Vertical Portal即行业门户,目的是帮助某一行业的商业人员和技术人员找到自已需要的特定行业的商业信息和技术信息。Enterprise Information Portal(EIP)即企业信息门户。目的是帮助企业用户及员工通过统一入口找到分布于企业的各种信息。与Public Portal相似,Vertical Portal和EIP也同样提供了检索、分类和个性化定制服务。

Portal服务器[ ]

Portal服务器是容纳Portlet容器,支持Portlet呈现的普通或者特殊Web服务器。Portal服务器通常会提供个性化设置、单点登录、内容聚合、信息发布、权限管理等功能,支持各种信息数据来源,并将这些数据信息放在网页中组合而成,提供个性化的内容定制,不同权限的浏览者能够浏览不同的信息内容。通常,Portal提供以下功能:

  • 单点登录:Portal通常采用ACLSSLLDAP等业界标准的安全技术,提供对所有现有应用系统的安全集成,只需在Portal的唯一入口上登录一次,就可以访问所有应用系统和数据。对于安全性要求较高的应用系统,如电子商务平台、交易系统等,通过扩展接口传递用户身份信息,如数字证书信息、数字签名信息等,进行二次身份认证,保证单点登陆的安全性。
  • 权限控制:系统采用LDAP对用户资源进行统一的管理,同时提供二次开发接口,可以与其他应用系统的用户管理模块对接,并能随相关业务系统实时更新访问权限。通过完善的授权机制及存取控制,用户访问权限控制到字段级别,确保用户只能访问具有权限的应用系统及相关信息。
  • 内容管理: 实现应用系统之间实时交换信息。采用多种缓存机制,保证内容交换的性能和准确性。采用基于XML的Rich Site Summary (RSS)标准,迅速在各应用系统之间传播最新变化。
  • 信息发布: 实现信息门户内容的动态维护。动态网站系统可与OA协同办公系统、知识管理系统等集成,网站信息须经OA系统的审批流程流转通过后或知识管理平台设置具有外部共享权限后才可正式发布,真正实现内外信息发布的同步。
  • 文件管理: 系统实现无缝集成多种数据源,包括:数据库、文档(Office文档、PDF、AutoCAD、甚至ZIP文档)、Web网页、FTP站点等,并对数据按业务要求和职务特点加以分析整理,通过统一Web界面主动推送(Push)至用户的门户桌面,帮助用户做出及时、正确的决策。

Portlet容器[ ]

Portlet容器提供Portlet执行的环境,包含很多Portlet并管理它们的生命周期,保存Portlet的定制信息。

一个Portal容器接收到来自Portal的请求后,接着将这个请求传递给存在Portal容器的Portlet 执行。Portlet容器没有义务去组合Portlet 产生的信息內容,这个工作必须由Portal来处理。Portal和 Portal容器可以放在一起视为同一个系统的组件,或者分开成为两个独立的组件。

Portlet容器是普通Web Servlet容器的扩展,所以一个Portlet容器可以构建于一个已经存在的Servlet容器或者可能实现全部Web Servlet容器的全部功能。无论Portlet容器怎么实现,它的运行环境总是假定它支持Servlet2.3规范。

通常,Portlet容器扩展自普通的Servlet容器。

Portlet[ ]

Portlet是Portal中最重要的组件,一个Portlet是以Java技术为技术的Web组件,由Portlet容器所管理,负责在Portal中呈现信息内容,有相应的生命周期。通过自定义Portlet,用户很容易定义个性化的Portal页面。Portlet由Portlet容器负责管理、处理请求并返回动态页面,可以作为Portal的可即插即用的界面组件。

这些由Portlet产生的内容也被称为片段,而片段是具有一些规则的标记( HTMLXHTMLWML ),而且可以和其他的片段组合而成一个复杂的文件。一个或多个 Portlet 的内容聚合而成为一个Portal网页。而Portlet的生命周期是被Portlet容器所管理控制的。

客户端和Portlet的互动是由Portal通过典型的请求/响应方式实现,正常来说,客户会和Portlet所产生的内容互动,举例来说,根据下一步的连接或者是确认送出的表单,结果 Portal将会接收到Portlet的动作,将这个处理状况转向到目标Portlet。这些Portlet 内容的产生可能会因为不同的使用者而有不同的变化,完全是根据客户对于这个Portlet的设置。

Portal面临的挑战[ ]

AJAX技术的出现使portal技术面临着巨大的挑战:和AJAX技术的旨趣类似,portal技术也希望Web页面变的更像传统好用的C/S模式应用界面。通过在server端进行一些独特的处理技术,portal页面看起来像一个个小窗口,每一个小窗口相互独立,也可以彼此合作。

在server端每一个小窗口由一个portlet提供,通过复杂的聚合技术把portlet输出的内容聚合成一个完整的portal页面。显然,聚合技术是portal的核心技术。然而聚合带来的问题是:一个 portlet的刷新请求需要整个页面所有的portlet都进行刷新;而大部分portlet的状态其实并没有发生改变。这使得portal的性能受到很大的质疑。

实施成本[ ]

主流的商业Portal服务器一般都是很昂贵,项目预算当在7-8位数(硬件,软件,业务系统开发和培训服务), 一般的项目不敢问津. 开源产品,(包括Liferay,Pluto, JBoss Portal),需要二次开发的成本很高,而且缺少很多高级功能(典型如Inter-Portlet Communication,以及 WSRP支持),导致总体的成本仍然很高.

相比之下,采用AJAX方案就便宜的多,需要的仅仅是一个普通的Web Server. 只需要有人在IOC容器基础上做一个AJAX客户端聚合的Framework.

性能[ ]

Portal在Servlet之前作了一个统一的聚合器, 聚合器在一个浏览器请求之前需要页面上的所有portlet的render request返回, 而Portlet的处理时间是参差不齐的.这样,即使在WebSphere Portal 6推出并行render之后, 页面也要等待处理最慢的portlet返回之后再返回.

曾经有人提出使用Iframe的解决方案,就是把处理慢的portlet放到一个IFrame里,这样可以让Portal页面先带着大多数Portlet返回. 但是AJAX可以作到每一个类似portlet的模块异步请求, 独立刷新. 显然更好,更彻底.

相关条目[ ]

参考资源[ ]