从上世纪八十年代起,随着个人计算机( PC ) 的发展,企事业单位逐步建立起计算机应用系统来处理传统事务。从简单的单机应用逐步发展到局域网系统,进而建立跨地区垮国家的广域网系统。从单纯的以科学 计算和数据管理为主的系统逐步发展成综合的信息处理系统和办公自动化系统。从九十年代起随着互联网的普及,企事业单位的计算机应用系统也进入了互联网时 代,以 Web 网站为核心的面向全球的信息系统正在广泛建立。
在 企事业单位内部的各种信息系统逐步发展完备的情形下,新的问题新的需求逐步浮现出来:各种信息系统自成一体,使用和维护成本增大;信息资源不能共享,数据 一致性维护的成本太高;用户需要多次重复登录进入不同系统,操作繁琐,工作效率受限;用户不能按需获取信息定制内容;现有系统缺少用户之间的协作支持等 等。因此,如何将各阶段建立起来的各式各样的信息系统资源重新整合,即把一个个的信息孤岛有效地联结起来,通过一个“港口”简便进出,正在成为信息系统深 化发展的首要问题。
Protal (门户)技术的出现,带来了解决这些问题的良方。 Portal 以用户为中心,提供统一的用户登录,实现信息的集中访问,集成了办公商务一体的工作流环境。利用 Portal 技术,可以方便地将员工所需要的,来源于各种渠道的信息资料集成在一个统一的桌面视窗之内。根据 Portal 提供的定制功能,部门主管可以为本部门人员量身定制一套特有的信息门户,将部门共同所需信息有效地组织在统一的 Web 浏览器之中,并可根据人员级别和职能来设定相应的访问操作权限。
早在九十年代中期就有人提出了 Portal 的概念。最初出现的是像 Yahoo 这类的互联网服务商的 Portal 网站,后来出现了一些行业性 Portal 网站。早期由于没有相关的标准规范, Portal 网站技术五花八门,产品功能和品质参差不齐,因而难以获得人们的认可, Portal 技术的应用, Portal 网站的发展出现过短暂的停滞。
随着 Web 技术的广泛应用和 Web 相关标准的逐步完善,特别是在 2003 年获得业界通过的两个标准—— JSR-168 和 WSRP 为 Portal 的发展确立了方向,更是随着 SOA 理念的实际化使得 Portal 愈加火热起来。
一、 Portal 架构
(一) Portal 和 Portlet 概念
“ Portal ”一词在英语中解释为“入口,大门”,中文翻译为“门户”。在 Sun 的 Portlet 技术规范 JSR-168 ( Java Specification Request 168 )中定义为: Portal 是基于 Web 的应用,通常提供个性化,单点登录,整合不同资源的综合信息展示平台。
Portal 展现在最终用户面前的是类似于 Web 网页的 Portal 页面,也许有些 Portal 主页制作的更像是一个桌面系统的界面,更能获得用户的认可。
构成 Portal 页面的是能够建立和展现不同内容的一系列 Portlet 。 Portal 使用 Portlet 作为可插拔用户接口组件,提供信息系统的表示层。
Portlet 是部署在特定容器内用来生成动态内容的可重用 Web 组件。 Portlet 处理从 Portal 传递来的用户请求,动态生成输出内容的一个片段,展现在 Portal 页面的某个位置上。
Portlet 的主要特点:
Portlet 是基于 Java 技术的 Web 组件。
由专门的容器管理 Portlet 。
Portlet 用于生成动态内容。
Portlet 只生成标记片段,并不产生完整的 Web 页面。由 Portal 负责将 Portlet 片段整合成完整的 Portal 页面。
Portlet 不直接捆绑到 URL 。
Web 用户通过 Portal 同 Portlet 进行交互。
Portlet 具有预定义的模版和视窗状态。
Portlet 容器是 Portlet 的运行环境,它负责管理 Portlet 的生命周期,保存 Portlet 的定制信息。通俗的讲, Portlet 容器就是 Portlet 组件工作的管理器,这一点类似于 Servlet 容器和 Servlet 之间的关系。
(二) Portal 结构
Portal 是一个 Web 页面,它由一个或若干个 Portal 页面组织而成。而每个 Portal 页面又是由一个或若干个 Portlet 窗口构成的—— Portlet 是以窗口的形式出现在 Portal 页面里。如图 1 所示是一个 Portal 页面结构的示例,有四个 Portlet 窗口。
Portlet 窗口由两部分构成:其一是外观,包含有标题条、窗口控制和边框样式;其二是内容,即 Portlet 片段。
图 2 显示了 Portal 服务器、 Portlet 容器以及 Portlet 之间的关系。
(三) Portal 组成架构
Portal 系统一般由 Portal 服务器、支持 Servlet 的 Java 应用服务器或 Web 服务器、数据库服务器、 LDAP 服务器组成,此外还可以加上身份认证和访问控制服务器( Identity Server 或 Access Manager )等。前面所说的 Portlet 容器通常是打包在 Portal 服务器中的。
有的 Portal 系统可以工作在具有 Servlet 容器的 Web 服务器上,但多数 Portal 要求在 Java 应用服务器上运行。如 Liferay Portal 既能在 Tomcat ( Servlet 容器 +Web 服务器)上使用,也可以在 JBossAS ( Java 应用服务器 +Web 服务器)上运行,而 JBoss Portal 只支持 JBossAS 的 Java 应用服务器。
通常, Portal 的定制信息是保存在数据库中的,几乎所有的 Portal 系统产品需要数据库管理系统的支持。
LDAP 服务器主要用在用户管理、身份认证和权限管理上。有些 Portal 系统也支持使用数据库来管理用户身份和权限。
为了解决用户单点登录和访问控制问题,也许还要增加这方面的专业服务软件,如 Idengtity Manager 或 Access Manager 等。
此外, Portal 服务器也支持其它应用服务系统的协同工作,比如同电子邮件( Email ),网络交谈( Chat ),网络会议( Web Conference ),以及基于 Lotus Domino 的 OA 系统等直接对接联动。
(四) Portal 应用架构
图 4 是 Portal 应用的一个示例架构图。
(五) Portal 主要功能
1 、单点登录( SSO — Single Sign-On ): Portal 提供对各种应用系统和数据的安全集成,用户只需从 Portal 服 务器登录一次就可以访问其它应用系统和数据库。对于安全性要求较高的业务系统,如电子银行、电子交易系统等,通过传递用户身份信息,如数字证书信息、数字 签名信息等进行二次身份认证,保证单点登录的安全性。单点登录既减少了用户在多个应用系统反复登录多次认证的麻烦,更是简化了各种应用系统对用户及其权限 的一致性维护管理。
2 、资源整合: 能够把各种不同应用的内容聚合到一个统一的页面呈现给用户,实现同应用系统实时交换信息。能够从各种数据源如数据库、多种格式的文件档案、 Web 页面、电子邮件等集成用户所需的动态内容。
3 、定制与个性化 :能够为不同角色的用户制定不同功能权限的 Portal 页面。同时,用户自己也能够按照喜好在规定的权限下定制自己风格的页面和内容,如可以定制 Portal 页面,取舍不同功能和内容的 Portlet 窗口,自行布置 Portlet 窗口的摆放位置,可以对 Portlet 窗口外观,如标题,图标,颜色等进行个性化设置。
4 、协作功能 :为用户提供即时讨论,聊天,论坛,电子邮件以及语音或视频会议等功能。
5 、工作流: 支持根据业务处理规则建立起来的工作流任务处理,比如审批流程等待办事宜。
6 、信息检索: 从多种数据源检索动态信息资料。
7 、客户端 :除了 Web 浏览器外,可以为 PDA 和手机提供接口,实现移动接入服务。
二、 Portal 标准
建立一个以标准为依托的 Portal 才能很好地保护自己的投资,既便于同现有应用系统连接,也使得同第三方的相关产品更容易接口。在 2003 年先后发布的 JSR-168 和 WSRP 两大标准为 Portal 的发展奠定了基础,结束了战国纷争的局面, Portal 的发展和应用将会更加广阔长远。
下面介绍几个与 Portal 紧密相关的技术标准:
1 、 WSDL —— Web Service Description Language
Web 服务描述语言。 WSDL 是用来描述 Web 服务和说明如何与 Web 服务通信的 XML 语言。 WSDL 语言使用 XML 格式来描述信息的接口、访问格式和处理形式。
WSDL 描述信息内容。
2 、 SOAP —— Simple Object Access Protocol
简单对象访问协议。 SOAP 是一种在无中心的分布式环境下,应用系统之间交换结构化信息和特定类型的信息所使用的基于 XML 的轻量级协议。 SOAP 允许任何信息对象在任何语言、任何平台上使用多种传输协议实现传输处理。
SOAP 定义信息的传输处理。
在 Web 应用环境中,通常把 SOAP 同 WSDL 结合起来,利用 HTTP 协议实现应用系统之间交换各种类型的信息对象。
3 、 JSR -168 —— Java Specification Request - Portlet Specification
Java Portlet 规范。 JSR-168 为业界明确了 Portal 的定义,制定了 Portlet 规范标准,从而解决了基于 Java 的 Portal 之间,以及同其他 Web 应用系统之间的互操作性。遵循 JSR-168 的 Portlet 将具有适用于所有 Portal 服务器和 Web 应用系统,支持多种类型的客户端,支持本地化和国际化,具备确定的安全性,允许 Portal 应用程序热部署和重新部署。
4 、 WSRP——Web Services for Remote Portlets
远程 Portlet Web 服务协议。 WSRP 定义了 Portal 和 Portlet 容器服务之间标准化接口的一个 Web 服务标准。 WSRP 允许在 Portal 之间或其他 Web 应用上即插即用,具有互操作性,提供可视化的、面向用户的远程 Web 服务。
远程 Portlet 在远程服务器上作为 Web 服务运行,其服务可以发布到公共的或单位自己的 UDDI 服务器上。 Portal 或其他支持 WSRP 的应用系统通过 UDDI 服务来查找并使用远程系统提供的 WSRP 服务内容。
WSRP 的典型应用是把天气预报、即时新闻、股市行情等嵌入到自己的 Portal 中(在国外有专门的 WSRP 内容提供商提供这种服务)。
WSRP 使用了 WSDL 定义应用程序的接口,并以 SOAP 作为通讯标准。
5 、其他规范标准
此外还有一些与 Portal 有一定关联的技术标准,在开发建立 Portal 应用中将会使用到:
UDDI : Universal Description , Discovery and Integration
JSR-170/283 : Java Specification Request - Content Repository for Java Technology API
JAAS : Java Authentication and Authorization Service
LDAP : Lightweight Directory Access Protocol
SAML : Security Assertion Markup Language
BPEL : Business Process Execution Language for Web Services
三、 Portal 应用实现
Portal 可以从本地或远端获得数据资源:数据资源可以来自于本地或异地的数据库,应用系统,公共信息内容供应商( RSS ,提供新闻、财经信息、天气预报等), Web 站点或其他 Portal 。此外, Portal 还可以提供日历、工作流、电子邮件、论坛、博客、 Wiki 、即时交谈、电子会议等等协同工作的应用功能。可见, Portal 是一个有别于传统桌面应用和 Web 网站的全新应用系统,是各种信息处理的集中展现平台,是用户日常工作的综合台面。
显然,建立一个良好的 Portal 应用需要充分考虑各种应用系统和数据资源的整合问题:
1 、现有应用系统和数据资源的利用 对能够改造利用的,要开发相应的 Portlet 组件来重新实现;对不能改造的可以通过链接的方式跳转到这些系统,其中的数据库资源可以采取单纯读取的方式获得;还有些封闭的专业应用系统可能完全无法接入 Portal ,可以采取定期卸载的方式获得它的数据库资源。
2 、新建应用系统的考虑 需要以 Portal 理念进行设计,按照相关标准来开发实现应用功能的 Portlet 组件,然后集成到 Portal 系统使用。
3 、单点登录与权限管理 对于新建应用系统或能够改造的现有应用系统,通过 Portlet 组 件比较容易实现单点登录,进行统一用户认证和用户权限的控制。当然,对那些安全性要求较高的应用系统还可以在这些系统内部进行二次认证和授权处理。对那些 不能改造的应用系统显然也无法实现单点登录,用户需要重新登录到这类系统,用户管理和权限控制还依赖于这些系统自己处理。
(一)单点登录和权限控制
单点登录是为了方便用户进入多个应用系统,减少用户多次登录,免除用户记忆多套用户名和密码的麻烦。
单点登录涉及到两个问题,一是身份认证,二是权限控制。
身份认证是 Portal 系统提供访问控制的第一步,即确认用户是谁,能否进入系统。通常要求用户提供用户名和口令,必要时要求提供用户的数字证书,也可以配合使用 IC 卡、指纹等验证手段。
权限控制或授权确定一个用户的角色和级别,从而控制用户的访问许可,即决定用户能查阅哪些资料,能进行哪些操作等等。 Java EE 架构采用了基于角色的访问控制策略( RBAC )。 RBAC 的基本思想是把对用户的授权划分成两个分配关系,即“用户—角色”和“角色—权限”。 RBAC 的好处是便于应用系统的开发,使得程序设计相对独立和透明化,只是在应用系统部署使用时才通过“角色”把“用户”和“权限”关联起来,而且对用户和权限的调整配置容易实施。
用户与角色之间是多对多的关系,即一个用户可以被分配给多个角色,多个用户也可以分配给同一个角色。
角色与权限之间也是多对多的关系,即一个权限可以与多个角色相关,一个角色也可以包含多重权限。
Sun 公司建立了具有可堆叠和可插接功能的 JAAS 框架,为 Java 应用系统提供安全而灵活的身份认证和授权机制。如在 JBossAS 应用服务器环境下,利用 JAAS 技术, JBossAS 提供了几种身份认证模块(使用者也可以自己编写新的身份认证模块),并且可以实现多级认证(堆叠)。对 Web 应用和 EJB 等则通过配置文件定义访问角色和访问方式以实现安全控制。对没有提供 JAAS 支持或支持不足的 Web 服务器或 Java 应用服务器,使用者需要在自己的应用程序中编写相关代码或模块来支持 JAAS 实现身份认证和权限管理。
此外还需要考虑不同领域内不同应用之间的信任关系,解决跨越应用系统的身份认证和访问控制问题。这一点需要用到 SAML , Federation 或 Liberty 等技术规范,通过传递用户认证资料取得应用系统之间的认证互信。
专业的 Web 服务软件公司能够提供比较全面的解决方案,其产品为 Web 环境下的各种应用提供可靠的身份认证和访问权限管理。比如 Sun 公司的 Access Manager 7.1 , Oracle 公司的 Oracle Access Manager 10g , IBM 公司有 Tivoli Access Manager (提供用户单点登录)和 Tivoli Identity Manager (解决访问控制问题),还有 BEA 公司的 BEA AquaLogic Enterprise Security 等。
相比之下,开源软件在这方面比较瘦弱,基本上没有专门的软件产品,只能提供一定的支持方案。例如通过对 JBossAS 和 Tomcat 做一些配置,可以支持使用耶鲁大学的 CAS 实现单点登录功能,也能够实现 JAAS 来获得用户身份认证和对应用资源的访问控制。这样,建立在 JBossAS 和 Tomcat 之上的应用如 JBoss Portal , Liferay Portal 和 Apache JetSpeed 当然也就具备了这些功能了。
在用户管理、身份认证和权限控制方面,无论是商业的或开源的 Portal 产品多数喜欢采用 LDAP ,当然也有的支持使用数据库。 LDAP 的好处一是它可以方便的按类别存储任何类型的数据信息;其二,它的树形存储结构类似于一个企事业单位的组织架构,容易对应;三是它同应用系统接口容易,各个 LDAP 产品的接口都一致无需特别配置;四是它对数据信息的访问安全控制方便;五是它偏向于相对固定数据信息的查询使用,效率较高,维护也方便。
(二) Portlet 开发
建立 Portal 应用系统的主要任务之一就是设计各式各样的 Portlet 组件,实现应用系统的各种功能。虽然多数 Portal 系统会附送一些常用的 Portlet 组件,可以满足一些公共服务需要,但跟本单位工作事务和业务处理相关的大量 Portlet 组件必须有专门人员进行细致的设计和开发。
Portlet 的设计开发有必要遵循 JSR-168 规范和 WSRP 标准,以适合各种类型的 Portal 服务器。在具体的实现上,也将会用到 WSDL 、 SOAP 和 UDDI 相关技术规范,以便同 Web 服务应用系统进行信息交互处理。
开发 Portlet 主要有两种方法,一是借助于 Portal 产品商提供的可视化的预制开发工具,二是应用 Java 语言直接编程。预制开发工具为 Portlet 开发者提供了许多有益的帮助,如自动产生必要的配置文件,预制了程序代码框架,提供所见即所得编辑和调试环境等等。但无论如何, Portlet 开发的重点是 Portlet 片段内容的产生和处理,主要以 JSP 为主配合 HTML 和 JavaScript 等网页开发技术,再借用 JSF , Struts , Hibernate 等框架来简化开发。
Portlet 处理信息资料主要有以下三种情况:
1 、 Portlet 在本地直接处理信息资料
Portlet 在本地直接同数据库、 LDAP 或其他数据存储系统进行查询、更新等操作,也可以使用其他 Java 资源如 JavaBean 、 EJB 组件进行交互处理。
2 、 Portlet 访问其他应用系统的 Web 服务
Portlet 需要访问其他应用系统资源时,一般是采用 SOAP 技术实现对 Web 服务的请求操作,如图 5 所示。
3 、 Portlet 访问其他 Portal 服务
Portal 可以把公共的 Portlet 信息发布到 UDDI 资源中心,以供其他 Portal 选择使用。需要其他 Portal 提供特定服务的 Portal 可以通过在 UDDI 中心查找定位来获取需要的 Portlet 提供服务(图 6 )。此种情况使用了 WSRP 技术来实现。
(三) Portal 定制
1 、业务处理
有别于传统的应用系统的开发,开发 Portal 应用的重点是 Portlet ,并每个 Portlet 并不是一个完整的系统而是一个实现特定信息处理功能的 Web 组件。因此,如果要把一个传统的应用系统全部转换到 Portal 来,就需要把原系统进行分解,把每个操作功能重新用 Portlet 来实现(不一定是一对一的),然后根据系统处理的要求组装到 Portal 页面上。
用户在使用传统的应用系统时,是从一层层的菜单逐级进入实际操作程序的界面的,操作繁琐,使用不便,容易遗漏。转入 Portal 系统后需要简化这种使用方式,把应用系统操作程序制作成的 Portlet 组件,直接嵌入某个 Portal 页面上或者按操作类型,时间先后或缓急程度顺序放置在“待办事宜”列表中,提示用户快速处理。
Portal 页面的组装即页面布置跟用户的级别和角色有关。 Portal 架构员需要根据每项业务的处理流程和每个 Portlet 的功能,按照每类用户的级别和角色来配置用户的 Portal 页面。与用户无关的或无操作权限的 Portlet 不应该出现在用户的 Portal 页面上,用户也不能把它添加进来。对于用户必须使用的 Portlet 也要限制使用者不能把它从 Portal 页面中移除出去。
2 、协作功能
提供同事之间的协同工作支持是 Portal 的功能之一。协同工作主要包括电子邮件、实时交谈( Chat ,类似于 QQ )、网络会议(语音或视频会议)、维客( Wiki ,允许参与者修改讨论的文章)、博客( Blog )、留言等等。在工作处理中遇到疑问需要向同事了解情况,可以即时开启 Chat 展开讨论,也可以召开网络会议。
另外可以设计一个手机短信 Portlet ,把需要尽快处理的事项及时发送短信通知相关人员。
有的 Portal 产品附带了一些协同工作的 Portlet 和服务软件,有的需要专门购买,也有开源软件可以免费使用。
3 、其他功能
提供诸如信息检索、公告、新闻、日历、通信录等辅助功能以方便工作。如果连接互联网,还可以获取天气预报,提供证券行情等公共服务。
引用地址:http://neujingxiao.blog.163.com/blog/static/51394720087732536269/