主题
面向服务的架构
![]() |
精通 SOA |
|
第 4 部分:通过富用户界面公开服务作者:Jennifer Briscoe
通过利用 JavaServer Faces 和标准 portlet 针对富界面开发的最佳实践公开服务。
2008 年 8 月发布 富用户界面(富 UI)是一个在外观上与桌面应用程序类似的界面。这些类型的界面既有优势又有劣势,但却能够向 IT 和终端用户均衡展示面向服务的体系结构 (SOA) 的优势。 最近,富 UI 空间有了一系列改进,随之而来的是各种各样的工具包、吸取的经验和教训,以及最佳实践。这部分的 “精通 SOA”将描述富 UI 的优势以及如何在 SOA 中利用从 Collect America SOA 中吸取的经验和富 UI 计划来成功地提公开服务。 Collect AmericaCollect 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 案例中,主要的业务需求是围绕在一个屏幕上向用户展示尽可能多的数据。这需要将大量数据聚合在一个界面中。此外,最终用户和应用程序交互的目标有两个 1) 使用附加信息批注一个现有帐户 2) 随着每个帐户所属数据集的增大,及时在不同点作出帐户处理策略的决定。结果是,在操作数据集的不同最终用户之间产生长时间运行的会话状态,该数据集随着使用变得越来越丰富。Collect America 案例中的会话状态、消耗时间、多个用户以及数据集使得富 UI 成为天作之合。 富 UI 以何种方式应用在 SOA 的什么地方?此处的 SOA 原则为人们所熟悉:
然而,如此松散耦合的服务如果没有事件将它们联系起来,就会形成业务流程难以跨越的垂直功能孤岛。富 UI 通过在 SOA 上提供一个事件框架来帮助跨越这些垂直孤岛,它们提供了一种方法使用户可以切实形象地了解该体系结构的优势。 例如,portlet 提供了一种出色的方法以向最终用户公开基础服务。通过挑选页面或屏幕上驻留的内容,最终用户可以看到该体系结构的灵活性甚至底层智能。此外,最终用户享有重用的权利。 开发过程和考虑事项现在我们已经了解了 SOA 和 富 UI 是如何互为支持的,下面讨论实施。开发富 UI 时主要考虑的事项为:
开发 SOA 或富 UI 时一个主要的工作就是业务流程分析。此分析不仅用于确保服务级别粒度是适当的,还通过用户界面更加清楚地定义交互和导航路径。重点应该放在对业务流程的透彻分析上。 创建了业务流程模型库后,服务粒度就开始形成。下一步主要是对交互设计执行同样的分析流程。交互设计必须直观。人们只使用他们了解或者可以很快学会的事物。例如,下面的屏幕截图展示了通过 Collect America 应用程序的一个页面提供的一些服务。每个演示区都通过基础服务提供不同的数据集和数据视图。这样,一个页面可以展示大量数据而不会对用户造成混乱。此外,正确的服务粒度确保了对后续页面和/或应用程序最大程度的重用。 交互设计完成后,您应该了解实施所需的一切了,可以选择框架或工具包。选择框架时考虑以下事项:
许多框架以小部件和打包视觉效果的形式不同程度地提供对以上各项的内置支持。正确的框架可以促进生产率的大幅提高。例如,为 Collect America 选择框架时,主要考虑的是开发工作生产率的增长。下面的屏幕截图是 Collect America 应用程序内的一个主页示例。使用 Oracle ADF Faces 实施中的一个即需即用的小部件来制作图形,这样可以节省大量开发时间。 对所选工具的培训也是重要的考虑因素。这些工具包和框架在提供灵活性的同时也增加了培训的难度和需求。 最后,需要改变测试和诊断方法以反映所选工具包和框架的使用。DOM 检查、带有日志记录的 instrumenting javascript、javascript 调试器和流量嗅探等诊断科技都需要是随时可用的工具。 此外,从整体考虑测试时,可以使用一些方法。服务模拟提供了很好的解除前后端耦合的方法,有助于敏捷开发。还应考虑如何像 Junit 在服务器端进行自动单元测试那样自动进行 JavaScript 单元测试。另外,在服务级考虑自动测试而非仅在方法或类级。最后,综合测试 Web 应用程序行为的工具包和内嵌的 Ajax 模型从整体考虑系统测试自动化。 结论在过去的几年中,可供富用户界面使用的工具包和框架的数量猛增。随着这些框架被集成到企业应用程序中,开始出现一组最佳实践和设计模式。经过深思熟虑和预先规划,富 UI 概念可以发挥 SOA 的优势并将其送到最终用户的手中。 |