WSRP/portlets子系统1Web浏览器Http/ajax门户站点WSRP/portlets子系统2WSRP/portlets子系统N
说明:
1,这里只显示了门户内容发布和聚合的情形,其它的如单点登录等功能没画出来。 2,各子系统需要暴露的门户入口内容转成网页构件portlets,并实现WSRP协议接口。 3,门户站点通过WSRP协议访问各子系统,按照发布需求把相关的portlets抓过来组成一个门户页面。
4,用户通过浏览器访问门户站点,返回一个统一的页面。Ajax技术可以局部刷新内容,或者直接把portlet拉回来(如果权限和设计允许)。
5,用户通过门户进入其中一个portlet后,如果那个portlet不是一个子门户,可以根据需要设计成正常访问子站点一样(不用全部页面都设计成portlet模式)。
4.门户构建技术
传统上,采用“container-oriented portal model”方式创建门户网站,这种方式比较依赖容器,使得内容聚合比较困难。随着Web2.0的到来,大量的新技术开始应用到门户建设中,例如AJAX,widgets,REST,WOA/SOA等,也出现了针对门户Portal的国际标准,比如java社区的JSR168/JSR286,还有通用的WSRP(Web Services for Remote Portlets),下面介绍下JSR168和WSRP(重点介绍):
首先是portlet的定义:
Portlets在Web门户上管理和显示的可插拔的用户界面组件。Portlet产生可以聚合到门户页面中的标记语言代码的片段,如HTML,XML等,通常,根据桌面隐喻,一个门户页面显示为一组互相不重叠的portlet窗口,其中每一个portlet窗口显示一个portlet,因此,可以说一个(或一组)portlet就像一个在门户网站上运行的基于Web的应用程序, Portlet应用程序的一些例子包括电子邮件,天气预报,论坛和新闻等。Portlet标准的目的是使开发人员开发出的portlet可以插入到任何支持该标准的门户网站。
Java Portlet规范(JSR168,JSR286)提供portlet在不同Web门户网站的互操作能力。该规范定义了portlet容器和portlet之间交互的一组API,解决个性化,展示和安全方面的问题。
由于JSR168/JSR286标准只能应用在java上,所以这里不详述。下面介绍的标准是通用的,没有受语言和容器限制,此标准比JSR168/JSR286更高一层次。
4.1门户实现技术规范(WSRP):
(注意:内容摘自网络)
WSRP(Web Services for Remote Portlets),一个定义了如何利用基于 SOAP 的 Web 服务在门户应用程序中生成标记片断的规范。通过定义一组公共接口,WSRP 允许门户在它们的页面中显示远程运行的 portlet,而不需要门户开发人员进行任何编程。对于最终用户,这些 porlet 就和运行在他们本地的门户上一样,但是实际上这些 portlet 来自于远程运行的 portlet 容器,并且交互是通过 SOAP 消息的交换来实现的。在面向服务的体系结构中利用 WSRP 将是一个强大的组合,从而使面向呈现的 portlet 应用程序可以被发现并重用而不用任何额外的开发和部署活动。
WSRP 是一项呈现技术,并且最近获得了众多门户市场主要厂商的支持,包括 IBM?,BEA,Oracle 和 Microsoft?。WSRP 的最终目标是将 Web 服务和面向服务体系结构的优点带给最终用户。下面通过图文简要介绍:
图4.1.1. WSRP 依赖于现有的 Web 服务技术
图4.1.2. 集合本地 portlet 标记的门户
图4.1.2 显示了一个传统的门户模型,门户有一个 portlet 容器,运行多个不相关的 portlet。每个 portlet 都生成标记片断,门户把这些片断集合在一起,创建一个完整的页面呈现给用户。
如果 Web 服务提供一个机制来创建独立于平台的服务,且 JSR-168 定义了一个标准来开发 portlet,那么你为什么需要 WSRP 呢?答案很简单。虽然 Web 服务提供了重用后端服务的能力,WSRP 却让你能够重用整个用户接口!
在这个例子中加入 WSRP,你可以更加容易的将股票报价 portlet 集成到你的门户中。你可以浏览 UDDI 目录来为用户提供 portlet 本身,或者提供用户浏览 portlet 注册表的能力。一旦发现了 Stock Quote Portlet,将其添加到门户上只需要点击几下鼠标就完成了。你不需要执行任何代码编写或者部署活动,因为该 portlet 是通过 WSRP 来调用的。最终用户不需要了解任何关于 WSRP 的知识,甚至不知道他们的 portlet 实际上是远程托管的!最终用户只知道他们有一个可用的 portlet 目录,他们可以从中进行挑选。还有什么可以更容易呢?
图4.1.3. 作为 WSRP 消费者 的 portlet 从远程 portlet 中集合标记
WSRP 生产者(WSRP producer):
这是一个 Web 服务,提供了一个或者多个 portlet,并且实现了一套 WSRP 接口,因此也为消费者提供了一组常用操作。生产者仅仅可以提供一个 portlet,或者提供一个运行时(或容器)来部署和管理多个 portlet,这取决于实现方式。 WSRP 生产者是一个真实的 Web 服务,通过 WSDL 和一组端点完成。WSRP 中的每个生产者都是通过标准的 WSDL 文档来描述的。
WSRP portlet:
WSRP portlet 是一个可插入的用户接口组件,存在于 WSRP 生产者内,通过生产者定义的接口进行远程访问。WSRP portlet 并不是一个 Web 服务(它不能被直接访问,必须通过他的父生产者来访问)。
WSRP 消费者(WSRP consumer):
这是一个 Web 服务客户端,调用生产者提供的 WSRP Web 服务并且为用户提供环境来同一个或多个生产者提供的 portlet 进行交互。WSRP 消费者最常见的例子是门户。
正如前面间接提到的那样,WSRP 定义了一组公共接口,所有的 WSRP 生产者都需要实现这些接口,并且WSRP 消费者必须使用这些接口来同远程运行的 portlet 进行交互。由于这些接口已经被完善定义,用来同任何符合 WSRP 的生产者进行通信,因此标准化这些接口使门户可以与远程运行的 portlet 进行交互。WSRP 规范需要每个生产者实现两个必需的接口,还可以实现另外两个可选接口:
?
服务描述接口(必选): 服务描述接口允许 WSRP 生产者向消费者介绍它的功能。WSRP 消费者可以使用这个接口来查询生产者,以便发现其提供了哪些 portlet,以及关于生产者自身的一些其他元数据。这个接口可以作为一个发现机制来确定所提供的 portlet,但是同