Portal应用点滴 —— Portal简介

来源:互联网 发布:centos samba 编辑:程序博客网 时间:2024/05/21 10:01
 

 [引言] 早在2003年底,Portal这个名词第一次出现在了我的技术辞典中。当时对Portal的理解仅仅限于“页面上的几个可以随意摆放的小窗口”,觉得没有什么特别的,也没有把这项技术放在心上了。2004年底,我参与了一个基于Portal的项目开发。在过去将近一年的时间里,一直都在和IBM WebShpere Portal打交道,这给了我认识并学习Portal的好机会。Daily Portal这一系列的文章算是我这一年来对Portal认识的小小一个总结吧。
 
        Portal是一个内涵很丰富的名词,其中文意思是“大门,正门,入口或者进入的手段”。而这项技术也确实人如其名,它为用户提供了一种
简单而且统一的访问Web Application的入口。在这个定义中,统一是最为重要的方面,因为在一个企业中,其IT Support可能是由很多很多相对独立的系统组成,而它们都有各自的访问入口。在没有使用Portal技术之前,不管是企业内部员工,企业的合作伙伴以及企业用户都不得不在几个系统中来回跳转以获得对自己有用的信息,对效率有很大的影响。更糟糕的是,跨系统对信息进行采集和总括的时候,散布在各个系统的相关信息将会以不同的呈现方式出现在用户面前,要迅速从中获得所需要的信息集将是一项十分艰巨的任务。而Portal的统一意味着集成(integrate),它所提供的不仅仅是将几个系统的信息采集过来在一张页面上显示出来,还要提供安全,权限,统一的登陆服务,个性化设置等等。利用Portal来进行Legacy系统的整合是一个十分重要而且有意义的课题,可惜这一年来所做的项目仅仅是对一个系统升级,还没有
机会亲身体验Portal在系统整合方面的强大优势,希望有经验的朋友可以不吝赐教。
        说完Portal的定义,我们来看一下Portal的组成结构:

portal.gif

从图中我们可以看出,Horizontal Portals Infrastructure部分为建立不同的Portal系统提供了最基础的服务,通常它由以下几个方面组成:

        1、Presentation:提供了在不同的client端显示的服务;
        2、Personalization:基于User Profile的个性化设置服务;
        3、Collaboration:提供与其他系统,如果Mail,IM等的协作服务;
        4、Portlets:这个名词是不是很熟悉呢?Portlet提供了访问Web Application的服务;
        5、Search and Workflow:提供与Legacy系统集成的服务;
        6、Publish and subscribe:提供内容发布与订阅服务;
        7、Administration and Security: 管理及安全服务;
        8、Integration:提供与数据库连接以及元数据共享服务。

而在这八个方面当中,Portlets是最为核心的,通常我们对Portal的第一步感性认识也是从Portlet开始。简单的说,从页面上看到的一个个小窗口就是portlet。我们可以把Portlet看成是Web世界中的可重用的Component,它为用户提供了访问Web Application,Web Service或者Web Content的服务。一个Portal Page通常会包含几个Portlet,而这些Portlet之间是相互独立且互不影响的,也就是当一个Portlet无法正常工作的时候,另外的Portlet并不会因此而罢工,仍会正常地进行处理。
        最后大致说一下,使用Portal技术会给企业带来怎样的益处。首先,以可重用的Portlet作为核心的开发方式使得企业可以更快速的响应商业上的需求;Portal提供了强大的系统集成功能,降低了系统维护以及使用的成本,同时也降低了员工培训的成本;Portal提供了统一的访问入口使得用户访问各个系统的时候有更好的用户体验以及更好的安全性。
  

  在昨天的Post中,偶已经对Portal进行了简单的介绍,不知道各位对Portal是不是有一点点认识了呢?如果还是云里雾里的话也没有关系,毕竟Portal所涵盖的内容是很广博的,掌握它需要时间,了解也是需要时间的。在初步介绍了Portal的概念之后,今天我们来探讨一下Portal的核心——Portlet。
        首先,Portlet在表现形式上就是我们所看到的页面上一个个小窗口,但是它绝不仅限于将Web Content以模块化的方式显示出来。实际
上,每一个Portlet就是一个完整的Web Application,拥有完整的MVC。而Portlet的开发,部署,管理和显示都是完全独立的,不受其他Portlet的影响,从而其functionality(功能性)也是独立的,也就是说一个Portlet就是一个处理特定义务逻辑的Component。正是Portlet这种独立性与功能性,使得Portal的Administrator或者是End User能够很方便地配置符合自己要求的页面,充分提高信息采集与概括的效率。
        做完了表面功夫之后,我们将注意力集中到Portlet的底层实现中来。从Portlet的类继承关系上,我们可以看到Portlet的
Superclass仍然是HttpServlet。事实上,虽然Portlet相对Servlet而言进行了很大程度上的扩展并有很大的优越性,但是其本质与Servlet并无二致,都是一个处理HttpRequest并返回HttpResponse的过程,只是这个过程已经不是Servlet中的doGet、doPost或者service那么简单了,而是分成了两个方面:Event Phase和Content Rendering Phase。这就是Portlet的Two-phase Portlet Request Processing了。也许你会对这样的划分产生了兴趣,为什么需要这样去划分呢?其实,这样做是为了保持Portlet之间独立性。你可以设想一下,在一个Portal Page中包含了两个Portlet,而你在其中的一个Portlet输入了数据并提交,那么该Portlet将会处理你的请求并返回相应的结果,而另外一个Portlet则需要保持原来的样子。在这样的一个过程,对于处理了你的请求的Porlet,其Processing包含了两个phase,而另外一个Portlet则仅是进行了Content Rendering Phase的处理并将cache的内容返回。写到这里,我不禁想到了Ajax。以上的case,可以看作是页面的部分更新,如果使用了Ajax,是不是可以简化Portlet Request的处理过程呢?我相信这是一个有趣并值得深入探讨的问题。[1] 
        说完了比较底层的东西,我们最后再来看看Portlet比较特殊的一个地方:Portlet Mode。一个Portlet通常会包含几种display
mode,最常见的莫过于Minimize和Maxmize的display mode,除此之还会有Help Mode和Edit Mode。Help Mode为用户提供关于该Portlet的帮助信息,而Edit Mode则为用户提供了设置Portlet属性的界面。用户可以通过点击Portlet的title bar上的图标(图中黑色椭圆框住的部分)来切换不同的display mode,如下图所示:

PortalBar.bmp

 

 

原创粉丝点击