上图展示了这一差异。左边是典型的面向数据的 Web 服务,它提供了无格式的数据;它必须完全依赖于客户端的呈现代码来表示数据。(这意味着需要在客户机上安装和管理客户端应用程序组件。)右边是 WSRP 服务;它的分布式表示逻辑将表示任务分成:
生成标记语言。
将标记片段聚合成一个 Web 页面(没有显示)。
通过标准客户端容器呈现标记语言。
WSRP 示例
清单 2 展示了一个通过简单对象访问协议(Simple Object Access Protocol,SOAP)从 WSRP 使用者发出的 WSRP getMarkup 请求的示例。
清单 2. 通过 SOAP 发出的 WSRP GetMarkup 请求
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<getMarkup xmlns="urn:oasis:names:tc:wsrp:v1:types">
<registrationContext>
<registrationHandle>192.168.66.57_1096235652731_0</registrationHandle>
</registrationContext>
<portletContext>
<portletHandle>0.1</portletHandle>
</portletContext>
<runtimeContext>
<userAuthentication>wsrp:none</userAuthentication>
<portletInstanceKey>ProxyTest_row1_col1_p1</portletInstanceKey>
<namespacePrefix>Pluto_ProxyTest_row1_col1_p1_</namespacePrefix>
</runtimeContext>
<userContext>
<userContextKey>dummyUserContextKey</userContextKey>
</userContext>
<markupParams>
<secureClientCommunication>false</secureClientCommunication>
<locales>en</locales>
<locales>de</locales>
<mimeTypes>text/html</mimeTypes>
<mode>wsrp:view</mode>
<windowState>wsrp:normal</windowState>
<clientData>
<userAgent>WSRP4J Proxy Portlet</userAgent>
</clientData>
<markupCharacterSets>UTF-8</markupCharacterSets>
<validNewModeswsrp:view</validNewModes>
<validNewModes>wsrp:help</validNewModes>
<validNewModes>wsrp:edit</validNewModes>
<validNewWindowStates>wsrp:normal</validNewWindowStates>>
<validNewWindowStates>wsrp:maximized</validNewWindowStates>
<validNewWindowStates>wsrp:minimized</validNewWindowStates>
</markupParams>
</getMarkup>
</soapenv:Body>
</soapenv:Envelope>< xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">< validNewModes>
WSRP 生产者对这个请求的响应是 HTML 片段,使用者(通常是门户)可以将其聚合成一个完整的文档,例如门户页面。
不是将每个应用程序或 Portlet 部署到有意使用它的每个服务器上,而是跨网络边界共享应用程序,这具有明显的优势。WSRP 支持:
更简单的管理——门户管理员可以浏览要提供的 WSRP 服务的注册中心,而不是管理可插入组件的本地部署。用户受益于及时使用随需应变的新服务和内容集成。
负载分配——跨多个服务器分配负载。
减少基础设施成本——应用程序可以共享承载的基础设施。例如,只分配后端银行应用程序的表示层(通过 WSRP)保护了应用程序提供者的安全计算环境,而与此同时,用户仍可以与共享的 UI 进行交互。
控制内容表示——在门户重新分配内容时,内容和应用程序提供者可以极大地扩展新用户的范围。
门户:面向服务的 UI 的动态集成
门户的视图层将多个后端服务的 UI 集成为一个集中管理的 UI,这样可以统一分离的 IT 基础设施,并通过控制单一的 UI 向用户提供 IT 服务的单一视图。最初分开设计的应用程序可以连接起来构成组合应用程序,用于支持新的功能。例如,连接到协作 Portlet 的电子邮件 Portlet 可以过滤收件箱,使仅当寄件人在线并可以聊天时才显示所收到的电子邮件——这种能力是这两个原始应用程序所不具备的。
这种 portal 模型的重要意义在于改善了随需应变业务 (On Demand Business) 的敏捷性。管理员成为应用程序集成者,定义新的页面,向它们添加 Portlet,将 Portlet 连接在一起并设置权限(访问控制)——不用编程——来创建新的组合应用程序。自服务的门户使用户可以改变他们的工作环境,以适应他们独特的需求。门户体系结构解放了应用程序开发人员,使其能够全神贯注地创造新的业务价值。
将来,门户甚至能够集成组合服务,因而能够在更高的层次上聚合 UI。门户可以无缝地与来自其他门户的内容相集成,从而提供水平的、企业级的内容集成。
总结
使用门户/Portlet 体系结构,将 SOA 概念应用到用户界面,并委派公共的软件生命周期功能给 UI 容器,这改善了软件开发人员的时间价值 (time-to-value)。WSRP 标准通过 Web服务交付 UI 组件,为内容提供者和内容使用者提供便利,从而在不用进行任何编程的情况下支持某种类型的应用程序集成。
