设计支持 WS-I 标准的 Web服务(一)

日期: 2007-12-13 作者:Parlione 来源:TechTarget中国

  本文演示了为 Lotus Domino V8 开发 Web 服务,同时保持与 Lotus Domino V7.0.2 的向后兼容性。文中使用的 示例 是一组针对 Discussion 数据库模板的 Web 服务。这个解决方案作为 IBM 都柏林软件实验室时下进行的 Service-Oriented Architecture (SOA) Growth Project 计划的一部分,其目的是通过为 IBM 产品增加一些技术启用程序便于在 SOA 中进行集成,从而使基于 SOA 的解决方案得到更好的采用。这个特殊的解决方案有两个主要目标:

  在 Discussion 数据库模板上设计 Web 服务层以公开关键模板功能供 Web 服务客户机使用。

  确保最终得到的 Web 服务支持 WS-I Basic Profile 1.1,提高服务跨不同 Web 服务引擎和编程语言的互操作性。

  Discussion 数据库模板由于使用广泛,因此通常被选作一种代表性工具将它的一些功能公开为 Web 服务。通过 discussion 模板创建的数据库允许多个用户创建、删除和修改主题,响应主题以及对响应作出响应。另外,这些主题和响应可以是公有的,也可以是私有的,并且允许根据数据库中的视图对它们进行过滤。 每个作者都可以创建、修改和删除自己的配置文件,而一些有特权的作者还可以阅读其他人的配置文件。

  构建该解决方案的目的是公开以下三种逻辑 Web 服务:

  ViewManager,用于管理视图。
  ProfileManager,用于管理作者的配置文件。
  ThreadManager,用于处理主题和响应。

  使用 LotusScript 来实现该解决方案的原因在于:它是一种成熟的技术并且在 Lotus Domino 开发社区中使用广泛。WS-I 的互操作性是使用 Basic Profile 1.1 的 WS-I Interoperability Testing Tool 来验证的。

  本文总结了开发这个解决方案的经验并讨论了使用 Lotus Domino V8 开发自己的 Web 服务的最佳实践。本文还强调了实现 Lotus Domino V8 的 WS-I 的依从性的几个陷阱和应对措施,以及与 Lotus Domino V7.0.2 兼容的问题。Lotus Domino V7.0.2 兼容性是一个主要的需求,因为企业可能要花些时间才能迁移到 Lotus Domino V8。

  设计

  本节将对 Domino Discussion 数据库 Web 服务应用程序中使用的架构进行概述。重点介绍 Lotus Domino 中约束设计选择的一些限制;描述公开的接口并介绍如何实现 Lotus Domino V7.0.2 和 V8 之间的兼容性。

  Discussion 数据库 Web 服务是作为无状态 Web 服务进行设计的。在某些情形下,有状态 Web 服务更加适当,例如,提供分页机制以列出数据库中的主题和响应。 有状态的 Web 服务在集群的 Lotus Domino 环境下不能进行故障恢复,因为 Lotus Domino 没有提供在节点间异步复制会话和状态的功能。出于这个原因和简单性的考虑,我们选择实现无状态的 Web 服务。

  Web 服务

  Discussion 数据库 Web 服务在功能上可以分解为三种不同的服务。

  DiscussionProfileManager 允许管理当前用户的配置文件,还允许管理员管理其他用户的配置文件(如列出和删除配置文件)。

  DiscussionViewManager 用于列出数据库中的视图和文件夹以及为每个视图列出可排序的列。它可以与 DiscussionThreadManager 中处理视图的方法结合使用。

  DiscussionThreadManager 用于管理主题、响应和类别。它公开了一组 Create、Read、Update、Delete、Exists 和 List (CRUDEL) 操作来处理主题、响应、类别以及一些用于将文档标记为 read 和 unread 的方法。 有些操作在 single 或 bulk 模式下可用,如 updateTopic 和 updateTopics 操作。

  Web 服务的 LIST 方法返回主题、响应、作者、视图名和文件夹名的列表。这些方法提供了多个备选方案以允许将返回的列表根据排序标准进行排序。返回的列表可以根据 Notes Formula 语言查询、示例查询或视图进行过滤。一些提供简单分页机制的列表方法是无状态的。要使用这些方法,用户必须提供页号和所需的元素号。每次调用时收集文档;因此根据假设,如果数据库在两个调用之间发生变化,则两个不同的页面中可能返回相同的元素。

 

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

作者

Parlione
Parlione

相关推荐

  • SAP收购CallidusCloud 与Salesforce竞争

    一直被称为后台办公巨头的SAP现在似乎也想在前台办公大展拳脚。 最新的迹象是SAP收购CallidusClou […]

  • 事件驱动框架和SOA在空军的应用

    空军正在利用SOA来改善数据共享,并实时跟踪战机,美国空军机动司令部的Michael Marek解释了企业可从中学习的经验。

  • 揭秘New Relic APM技术细节

    New Relic应性能管理(APM)套件主要用于Web软件开发。它允许用户在面向服务的架构(SOA)上跟踪关键事务性能,并且支持代码级别的可见性来评估特定代码段和SQL语句对性能的影响

  • 仅凭SOA和云无法解决业务数据管理风险问题

    SOA和云可以是某些恼人问题高效的解决方案;这一点我们已经知道了。但是也要记住它们并不是所有事情的直接答案,特别是当你的问题是业务数据管理风险,而不是技术问题时。