门户网站是用户访问不同来源的信息和应用程序的焦点。一般来说,门户网站从本地或远程数据源(例如,从数据库、事务系统、联合内容提供者或远程 Web 站点)获取信息。它们加工此信息并将其聚集到复合页中,用一种简洁、容易的使用形式为用户提供信息。除了纯粹的信息之外,很多门户网站还包括一些应用程序,如电子邮件、日程、管理器、银行业务、帐单显示等等。各种不同的信息和应用程序需要不同的加工和选择机制,但它们都依赖于门户网站的基础结构,并影响门户网站所拥有的数据和资源,如用户简档信息、持久存储或对受管内容的访问。因此,几乎目前所有的门户网站实现都提供一种组件模型,它允许将称为 Portlet 的组件插入到门户网站基础结构中。
下面给出了一个示例来说明portlet 和 Web 服务的分布式门户网站解决方案(如图1),其中的某企业拥有一个门户网站(Portal)。门户网站有一个搜索(Search)和新闻 (News)portlet,它运行在本地 portlet 容器中,而银行(Bank)和股票(Stock)portlet 是远程运行的,由门户网站通过 portlet 代理(Proxy)访问。
显然,从一个门户网站的角度来看,如果 Web 服务是包括表示和应用程序逻辑的可视的面向用户的服务(如图1所示),那就方便多了。如果存在一个标准化的 Web 服务接口,这种可视的、面向用户的 Web 服务就可以通过门户网站一端的通用 portlet 代理来调用了。使用通用 portlet 代理消除了为每个 Web 服务插入到门户网站中,而开发特定的 portlet 的需求。Portlet 可以被动态地添加到环境中,用户得到的好处是他们可以及时地获得更多可用的服务。还可以在 portlet 中包括另外的远程 portlet,只要找到这些 portlet ,并通过创建一个绑定到可视的、面向用户的服务的新的 portlet 代理实例来绑定它们就可以了。通过使用 portlet 代理,用户就可以在门户网站中看到可视的、面向用户的远程 Web 服务,还可以象选择本地 portlet 一样选择它们。