富用户界面(富 UI)是一个在外观上与桌面应用程序类似的界面这些类型的界面既有优势又有劣势但却能够向 IT 和终端用户均衡展示面向服务的体系结构 (SOA) 的优势
最近富 UI 空间有了一系列改进随之而来的是各种各样的工具包吸取的经验和教训以及最佳实践这部分的精通 SOA将描述富 UI 的优势以及如何在 SOA 中利用从 Collect America SOA 中吸取的经验和富 UI 计划来成功地提公开服务
Collect America
Collect America 提供资产管理服务和可以持续重新定义同类最佳的财务产品Collect America 体系结构是一个 N 层体系结构支持多个商业应用程序和第三方供应商交互该体系结构基于 SOA可以提供数百种内部和外部服务其中许多服务参与编制自动及手动工作流程Collect America 的最终用户应用程序需要有一个动态界面为多个不同的数据源提供一个响应迅速统一的视图以直观地展示交互过程
以下是 Collect America 体系结构的高级概览
什么使界面丰富?
虽然富 UI 还没有被普遍接受的标准定义但在本质复杂的应用程序中发现了一些关键特性
提升的响应性 传统的 Web 应用程序通常以自上而下的方式呈现页面这意味着载入一个页面所花费的时间不短于该页面的最长操作时间此外传统的 Web 应用程序将数据留给其在服务器上与之交互的一方从而延长了往返路线即便是排序和筛选等简单的活动也是如此富 UI 通常在客户端缓存数据集由于不必再返回到服务器从而可以更快地响应排序和筛选等活动
与服务器进行异步通信 除客户端数据缓存外与服务器进行异步通信消除了传统的自上而下呈现页面的操作从而使用户感觉性能提高了可以异步进行耗时长的操作一旦完成回调机制会触发呈现页面的某一部分这自然导致了创建标记片段(portlet 和 JSF 制作的简单事物)以利用并行化的趋势
HTML 自身不提供行为 富 UI 在外观上明显不同于传统的 Web 应用程序在与最终用户的交互以及浏览应用程序的方式上差别也很大那种外观仅凭 HTML 是无法营造出来的例如HTML 自身无法打开新窗口或改变鼠标上的颜色然而这些动态特性与异步行为和并行化相结合在应用程序中创建了非常精美的窗口图 A 显示了一个使用 javascript 动态构建搜索查询的示例然后使用 HTML 之外的其他技术显示查询的结果(只显示了部分结果列表根据用户鼠标的滚动情况获取下一列表内容)
然而单独这些特性无法丰富界面用户还必须具有丰富的经验即有关界面特性和底层体系结构的经验富 UI 位于 SOA 之上可以提供业务流程和域模型它们可以提供丰富的数据源
并且随着使用会更加丰富最重要的是它们展示了底层体系结构的智能
为什么选择富 UI?
富 UI 有许多优势这些优势不仅涵盖了性能和增强的功能还涉及到可维护性和灵活性但是为什么富界面始终是正确答案呢?
富 UI 通常适合用于以下情况
应用程序很复杂且包含一系列联系松散的功能这些功能分散在不同的数据源/系统中但需要单一的界面聚合 用户经常需要并行处理事务收集有关某一事物的知识然后将其运用到另一事物 不仅功能不同而且用户需要并行操作不同的数据 会话需要是丰富的— 它们需要会话状态以追蹤目前为止发生的和即将发生的事情并与服务器进行交互 保留每次与应用程序会话的状态很重要 — 您不必因为用户选择启动另一个活动而使原来的活动失效 在 Collect America 案例中主要的业务需求是围绕在一个屏幕上向用户展示尽可能多的数据这需要将大量数据聚合在一个界面中此外最终用户和应用程序交互的目标有两个 ) 使用附加信息批注一个现有帐户 ) 随着每个帐户所属数据集的增大及时在不同点作出帐户处理策略的决定结果是在操作数据集的不同最终用户之间产生长时间运行的会话状态该数据集随着使用变得越来越丰富Collect America 案例中的会话状态消耗时间多个用户以及数据集使得富 UI 成为天作之合
富 UI 以何种方式应用在 SOA 的什么地方?
此处的 SOA 原则为人们所熟悉
基于策略的行为协商 边界清晰 自治 约定交换 如果服务有清晰的边界则实体会互不信任也不共享数据服务可以强制使用自己的安全策略此外自治理念的内在含义是服务自我管理位置透明相互独立和松散耦合这些特性使得公开独立周密的模块功能变得非常容易事实上通过提供可在任何数量的业务流程中组合和重组的底层体系结构JSF 和 portlet 等富 UI 技术和框架的发展增强了丰富的用户体验
然而如此松散耦合的服务如果没有事件将它们联系起来就会形成业务流程难以跨越的垂直功能孤岛富 UI 通过在 SOA 上提供一个事件框架来帮助跨越这些垂直孤岛它们提供了一种方法使用户可以切实形象地了解该体系结构的优势
例如portlet 提供了一种出色的方法以向最终用户公开基础服务通过挑选页面或屏幕上驻留的内容最终用户可以看到该体系结构的灵活性甚至底层智能此外最终用户享有重用的权利
开发过程和考虑事项
现在我们已经了解了 SOA 和 富 UI 是如何互为支持的下面讨论实施开发富 UI 时主要考虑的事项为
业务流程分析 高级交互设计 框架/工具包选择 培训 测试和诊断 开发 SOA 或富 UI 时一个主要的工作就是业务流程分析此分析不仅用于确保服务级别粒度是适当的还通过用户界面更加清楚地定义交互和导航路径重点应该放在对业务流程的透彻分析上
创建了业务流程模型库后服务粒度就开始形成下一步主要是对交互设计执行同样的分析流程交互设计必须直观人们只使用他们了解或者可以很快学会的事物例如下面的屏幕截图展示了通过 Collect America 应用程序的一个页面提供的一些服务每个演示区都通过基础服务提供不同的数据集和数据视图这样一个页面可以展示大量数据而不会对用户造成混乱此外正确的服务粒度确保了对后续页面和/或应用程序最大程度的重用
交互设计完成后您应该了解实施所需的一切了可以选择框架或工具包选择框架时考虑以下事项
网络带宽 显示操作 Web 远程控制 Web 服务的使用 对 DOM 操作的需求 优化性能的能力 可维护性 许多框架以小部件和打包视觉效果的形式不同程度地提供对以上各项的内置支持正确的框架可以促进生产率的大幅提高例如为 Collect America 选择框架时主要考虑的是开发工作生产率的增长
下面的屏幕截图是 Collect America 应用程序内的一个主页示例使用 Oracle ADF Faces 实施中的一个即需即用的小部件来制作图形这样可以节省大量开发时间
对所选工具的培训也是重要的考虑因素这些工具包和框架在提供灵活性的同时也增加了培训的难度和需求
最后需要改变测试和诊断方法以反映所选工具包和框架的使用DOM 检查带有日志记录的 instrumenting javascriptjavascript 调试器和流量嗅探等诊断科技都需要是随时可用的工具
此外从整体考虑测试时可以使用一些方法服务模拟提供了很好的解除前后端耦合的方法有助于敏捷开发还应考虑如何像 Junit 在服务器端进行自动单元测试那样自动进行 JavaScript 单元测试另外在服务级考虑自动测试而非仅在方法或类级最后综合测试 Web 应用程序行为的工具包和内嵌的 Ajax 模型从整体考虑系统测试自动化
结论
在过去的几年中可供富用户界面使用的工具包和框架的数量猛增随着这些框架被集成到企业应用程序中开始出现一组最佳实践和设计模式经过深思熟虑和预先规划富 UI 概念可以发挥 SOA 的优势并将其送到最终用户的手中