IBM®
跳转到主要内容
    中国 [选择]    使用条款
 
 
Select a scope: Search for:    
    首页    产品    服务与解决方案     支持与下载    个性化服务    
跳转到主要内容

developerWorks 中国  >  Information Management | SOA and Web services  >

Data Web Services:访问 IBM 数据库服务器的新方式 —— 构建 Web 服务

通过服务访问 DB2 和 Informix Dynamic Server

developerWorks
文档选项

未显示需要 JavaScript 的文档选项

讨论

英文原文

英文原文


级别: 初级

Vijay Bommireddipalli (vijayrb@us.ibm.com), 数据服务器解决方案架构师, IBM

2008 年 1 月 03 日

IBM® Data Studio 是一个一体化的工具平台,其中包含用于开发和管理数据库服务器的一整套特性。Data Studio 的开发 IDE 包含了大量特性,可以为所有与数据相关的开发提供帮助。该产品的一个重要功能就是生成基于 Web 服务的数据库访问。本文将介绍这个令人激动的新特性,即 Data Web Services,并了解它的一些特性和功能。

简介

Web 服务已成为数据交换、访问和操纵的主流机制。它的底层标准已经成熟,而且它的一些优点,例如松散耦合和虚拟化,已经向实现面向服务架构(Service-Oriented Architecture,SOA)这一目标前进了一大步。很多调查表明,难于实现已成为推迟甚至放弃 SOA 项目的主要原因之一。很多面向数据的 Web 服务都做一件事 —— 在一个数据库上执行一条语句,或者调用一个存储过程,但是,为了完成这些操作,需要将这些数据库操作封装到应用程序代码逻辑中。开发面向数据的 Web 应用程序是一项有挑战性的工作,因为需要同时具备 Web 开发和数据库方面的专业知识。开发这些面向数据应用程序的数据访问开发人员可以证实,他们常常需要将 DML(数据操纵语言)包装到很多代码中。而且,代码的逻辑是重复的,例如:打开连接、执行语句、处理结果集、关闭连接,等等。如果能利用已有的数据库操作,将它们以 Web 服务的形式提供来避免执行上述操作,那就太理想了。这正是 Data Web Services 可以发挥作用的地方。





回页首


什么是 Data Web Services?

Data Web Services(DWS)是下一代解决方案,对于基于 Web 服务的 DB2 和 IDS 数据库服务器访问,该解决方案可显著简化其开发、部署和管理。DWS 使您可以利用 DML 语句(例如 Select、Insert、 Update、Delete 和 XQuery)和存储过程调用,生成 Web 服务,而不需要编写任何代码。DWS 提供了一个完整的 Web 服务接口,包括对 SOAP 和 REST 绑定的支持。而这些都是 Data Studio Developer 的一部分,所以可以在同一个环境中开发 Web 服务和数据库应用程序。生成的 Web 服务被打包成可即时部署的 Web 应用程序,后者可部署到受支持的应用服务器上。

DWS 的关键方面

  • 无需编程,使用 DWS 创建 Web 服务!
    • DWS 使您可以通过拖放界面创建 Web 服务:将任何 DML 操作或存储过程调用拖放到一个 Web 服务容器中,即可创建可即时部署的 Web 服务。
    • DWS 还支持一个集成的测试环境,在这个测试环境中,只需点击几次鼠标,就可以部署和测试生成的服务。
  • DWS 支持基于 HTTP 的 SOAP 和 WSDL 生成。
    • DWS 自动生成 Web 服务描述语言(Web Services Description Language,WSDL)文件,其中包含 Web 服务的描述。
  • DWS 支持 REST 风格的服务接口。
    • 除了基于 HTTP 的 SOAP 外,DWS 还支持 HTTP GET/POST 绑定,以便将 REST 风格的服务提供给数据库服务器。
  • DWS 可以将服务器端 XSLT 应用到传入的 XML 服务请求和发出的响应上。
    • DWS 使您可以应用服务器端 XSLT,以满足任何服务形式的需求。在 Web 2.0 领域,有一些有趣的特性,在后面的小节中将介绍到。
  • 不会生成代码!
    • DWS 由一个公共元数据驱动运行时组成,不会在幕后生成任何 “黑盒” 代码。这使应用程序具有可靠性和轻量级特性。




回页首


开发 Data Web Services

图 1 所示,开发 Data Web Services 通常需要执行以下步骤:

  1. 开发 SQL 语句、存储过程或 XQuery 语句。
  2. 创建一个 Web 服务。
  3. 将所需的操作拖放到这个 Web 服务中。
  4. 将这个服务部署到应用服务器上。
  5. 使用集成的测试环境或 Web 服务客户机测试这个 Web 服务。

图 1. Data Web Services 的典型开发流程
Data Web Services 的典型开发流程

逐步讲解

本文的内容并不全面,而只是通过一个例子讲解上面列出的那些步骤。

安装和设置

注意:这里描述的步骤使您可以更好地理解 Data Web Services 的开发过程。但是,本文不属于教程,并没有完整地描述这些步骤。若要在您自己的计算机上尝试以下步骤,需要使用 IBM WebSphere® Application Server - Community Edition 设置 IBM Data Studio 和测试环境。另外还需要安装有样例数据库的 DB2。

请参阅教程 “IBM Data Studio: Get started with Data Web Services”(developerWorks,2007 年 12 月),这是关于 Data Web Services 的一个逐步指南,请遵循该教程,构建和运行您的第一个 Data Web Service。

参考资料小节还提供了免费下载 DB2 Express C、 WebSphere Application Server - Community edition 和 Data Studio 的链接。请访问 IBM Data Studio 主页,获取与 Data Studio 相关的更多信息。



  1. 首先,在 IBM Data Studio 中,创建一个新的 Data Development 项目。对于这个例子,将项目命名为 Demo

    图 2. 在 Data Studio 中创建一个新的 Data Development 项目
    新建 Data Development 项目

  2. 接下来,创建一个简单的 SQL select 语句,该语句返回一个雇员记录。 可以在 Data Studio 中使用 SQL 编辑器/构建器,也可以将已有的语句直接复制粘贴到编辑器中。在输入语句时,Data Studio 提供了一个集成的查询构建器,并且提供基于上下文的帮助(如 图 3 所示)。将该语句保存为 getmyEmp.sql

    图 3. 创建语句 getmyEmp.sql
    Data Studio 中用于 SQL 的上下文帮助

  3. 现在将这个 SQL 语句以 Web 服务的形式提供出来。为此,在 Web Services 文件夹上单击右键,选择 New Web Service,并命名为 myfirstService。这个 Web 服务 myfirstService 只是一个容器,它将存放被公开为 Web 服务的操作。

    图 4. Web 服务容器
    存放 SQL 操作的 Web 服务容器

  4. 接着,将创建好的 SQL 语句拖放到刚才创建的 Web 服务上。Web 服务 myfirstService 现在包含操作 getmyEmp.sql。这里包含的操作就是前面输入的 SQL 语句(getmyEmp.sql);但是,也可以选择将多个操作(包括存储过程)拖放到这个 Web 服务上。

  5. 在 Web 服务 myfirstService 上单击右键,选择 Build and Deploy

    图 5. 构建 Web 服务并将其部署到 WAS-CE 上
    将 Web 服务部署到 WAS-CE 上

  6. 接下来,选择安装在您的系统上的 WAS-CE 服务器作为部署 Web 服务的目标。默认情况下,Data Web Services 同时生成 REST 和 SOAP 绑定。当然,可以改为只生成一种绑定。还可以选择 Launch Web Services Explorer after deployment,以便使用内建的 Web 服务浏览器启动 Data Studio,以测试服务。

  7. 最后,选择 Finish

    Data Web Services 创建一个 Web 应用程序,并根据选择的 Web 服务器生成特定的配置文件。然后,将这个 Web 应用程序部署到本地的 WAS-CE 服务器。

    图 6. 将 Web 服务部署到 WAS-CE 上
    将 Web 服务部署到 WAS-CE 上



    注意:也可以选择生成一个 Web 应用程序(.war)文件,并自己来部署它。然后,Data Web Services 会根据选择的应用服务器,使用智能默认设置生成一个即时部署 的 Web 应用程序。当然,在部署之前,可以对这些内容进行定制。

  8. 部署好 Web 服务之后,Data Studio 启动 Web 服务浏览器,通过 Web 服务浏览器可以测试 REST 和 SOAP 端点。选择 SOAP 绑定,并为 empno 参数指定一个值。

    注意:这个例子中指定的 select 语句有一个名为 :empno 的参数占位符。这个值是作为 Web 服务请求消息的一部分发送的。最后会显示 Web 服务的响应,如 图 7 所示。可以单击 Web 服务浏览器中的源链接,以查看源 XML。

    图 7. 使用 Web Services Explorer 测试 Web 服务
    使用 Web Services Explorer 测试 Web               服务

  9. 虽然也可以使用 Web Services Explorer 测试 REST 绑定,但是这里我们使用一个 Web 浏览器。浏览器内建了对 GET 的支持。令浏览器访问下面 清单 1 中显示的 URL。Web 服务器返回一个 XML 响应,包含调用 getmyEmp SQL 语句的结果,其中 empno 参数的值为 000130。

    清单 1. 使用浏览器测试 REST 绑定
                            
    http://localhost:8080/DemomyfirstService/rest/myfirstService/getmyEmp?empno=000130
          

架构

上文提到,Data Web Services 不需要编写任何程序就可以生成 Web 服务;它也不会生成任何代码。所以您可能想知道 —— 这里有什么诀窍?Web 服务又是如何执行的?

让我们看看 DWS 的架构,理解幕后发生的操作:

正如您看到的那样,DWS 同时支持 SOAP 和 REST 型端点。传入的 Web 服务请求由特定于端点的代码处理。因此,每当传入一个请求时,无论是 REST 还是 SOAP,DWS 都会对它进行处理,为请求生成一个相同的表示。然后,公共元数据驱动运行时对该请求进行处理,并决定如何将 Web 服务消息映射为数据库请求。与生成 Web 服务的操作不同,这里不存在中间操作,即将 Web 服务消息中的参数和结果映射到 Java 数据类型,相反,Web 服务消息中的 XML 数据类型被直接映射为数据库数据类型。由于减少了很多数据类型在格式之间的映射,应用程序具有更高的效率和更好的性能。

Data Web Services 应用程序被打包为 J2EE Web 应用程序,后者可以部署到受支持的应用服务器上。可以像部署其他 Web 应用程序那样将它部署到您的环境中。您可以充分利用已有的基础设施。生成的应用程序由一个公共运行时 JAR 文件和一些配置文件组成。这些 XML 配置文件包含特定于应用服务器的信息,另外还有其他信息。其中一个配置文件包含特定于您所选择的 Web 服务操作的信息。运行时根据被选择作为 Web 服务公开的 DML 操作,动态地决定如何执行服务。公共运行时结合这个配置文件,创建一个轻量级应用程序。由于每次公开新的 Web 服务时都没有生成黑盒代码,因此这种应用程序具有可靠、一致的执行行为。这种公共元数据驱动的代码可生成一个健壮的、轻量级运行时。


图 8. Data Web Services 的架构概图
Data Web Services 的架构概图

使用 XSLT 定制 Web 服务

DWS 一个有趣而强大的特性是,它可以将服务器端 XSL 转换应用到 Web 服务请求和响应上。该特性使您可以定义客户机看到的消息的格式。如果企业或行业 Web 服务格式需求中规定了 Web 服务消息应该是什么样子,那么这个特性就特别有用。

对于 Web 服务请求和响应消息,DWS 有一个默认的消息格式。那些消息中的消息格式和 XML 标记名称取决于 Web 服务操作的名称、结果集列名、使用的绑定类型等等。在某些情况下,由于消息格式方面的需求,或者只是因为想屏蔽默认的标记名称,您可能不想让客户机看到默认的标记名称。通过使用服务器端 XSLT 特性,可以使传入的 XML 请求和输出的 XML 结果的格式不同于 Data Web Services 的默认消息格式。

通常,可以使用自上而下或自下而上的方法构建 Web 服务。在自上而下的方法中,先从一个服务规范(例如一个 WSDL 文件)开始,然后实现符合那个规范的底层代码。在自下而上的方法中,先从一个 Java bean 或 SQL 语句开始,将功能公开为 Web 服务。在 DWS 中,先从 DML 操作(例如查询)开始,将它们公开为 Web 服务。所以 Web 服务的开发当然是自下而上的。但是,在很多情况下,通过将 XSLT 应用到服务消息上,可以将自下而上型消息的服务格式映射到自上而下的设计。这样可以解决一些自上而下的服务格式需求,同时又可以用自下而上的方法开发 Web 服务。可以使用这种转换,将数据以人类可读的格式(例如 HTML、XHTML)或可通过 XSL 转换产生的任何文本格式交付到客户机。


图 9. 可定制的交付格式 - 应用 XSLT
在输入和输出消息中应用 XSLT

SOA

说起 SOA 环境,很多人并没有想到数据库。但是,SOA 的一个关键优点就是重用已有的组件。将丰富的业务逻辑构建到存储过程和高性能查询中的企业,现在可以使用 DWS 立即将它们放到 SOA 环境中。过去用来封装业务逻辑而开发的 DML 操作和存储过程如果运行良好的话,那么重用它们就不必花费精力去诊断新开发应用程序中的潜在问题。而且,Web 服务可虚拟化任何使用者的访问,因此更容易将数据库服务器插入到 SOA 环境中。

然而,仅仅提供 Web 服务支持并不能解决任何问题,也不能使您朝着面向服务架构更进一步。对 SOA 的讨论必须从企业级开始,然后归结到实现企业级 SOA 所需的组件上来。通过企业级讨论定义组件、可重用的企业级服务以及一个可靠的设计,这些是创建 SOA 的重要部分。然后,可以采用 Web 服务作为实现这些服务的一种方式。Data Studio 中集成的查询和存储过程开发环境使开发变得很容易,并且可以将这些工件公开为 Web 服务,从而帮助您实现目标。

Web 2.0 如何提供数据

Web 正经历着它问世以来最重大的一次转变。Web 应用程序通过标记、社会协作以及与后端异步交互的丰富的 Internet 应用程序等项目,将人工智能重新注入到应用程序当中,从而改善用户体验。这些应用程序全都被打上 Web 2.0 的标签,它们正在改变 Web 站点将内容交付给终端用户的方式。对 Web 2.0 的详细讨论超出了本文的范围,不过其中有一些技术对于实现 Web 2.0 风格的应用程序非常重要。REST 风格的 Web 服务、RSS 和 ATOM 等标准提要格式,以及 JSON 之类的轻量级格式,它们都是 Web 2.0 客户机中流行的技术。将数据从数据储存库提供给这些 Web 2.0 客户机,这是实现下一代应用程序的关键。

Data Web Services 工具固有地支持 REST 风格的服务。DWS 支持 GET 和 POST 请求。从 清单 1 可以看出,通过 GET 编码的 URL 允许您调用 Web 服务并在浏览器中查看结果。而 Web 表单广泛使用的通过 POST 编码的 URL 也同样受支持。HTTP POST XML 绑定是另一种受支持的绑定,它允许客户机以 XML 的形式发送和接收用户负载。这对于 XForms、AJAX 客户机之类的客户机特别有用。总之,DWS 支持三种 REST 风格的绑定:

  • HTTP GET 绑定
  • HTTP POST 绑定
  • HTTP POST XML 绑定

而且,可以利用将服务器端 XSLT 应用到 Web 服务消息上的功能,交付各种 Web 2.0 格式(例如 JSON、RSS 提要等)的结果数据。

安全性

受信任上下文

请参阅文章 “Use trusted context in DB2 client applications” (developerWorks,2006 年 10 月),更好地理解受信任上下文和它的功能。

另外,请参阅 “Enabling trusted context for DB2 databases” 专题(IBM,WebSphere Application Server 文档,2007 年 11 月),获取关于如何在 WebSphere Application Server 与 DB2 之间启用受信任上下文的信息。

当以 Web 服务的方式访问数据库时,安全性总是一个值得关注的问题。对于企业数据,必须谨慎地考虑哪些可以公开,以哪种绑定来公开。在这一点上,通过 Data Web Services 公开的面向数据的 Web 服务没什么不同。Data Web Services 的一个优点是,这种情况下提供数据的储存库(即数据库)有一个健壮的安全模型,可强制实施身份验证和授权,并提供基于角色的访问。

如前所述,在 DWS 应用程序中,可以利用成熟的 J2EE 基础设施,并且可以像任何 Web 应用程序那样应用相同的安全策略。在某些情况下,数据库和应用服务器在安全方面有更紧密的集成。例如,IBM WebSphere® Application Server 和 IBM DB2® 有一个称作受信任上下文(trusted context)的特性,该特性提供了从客户机到数据库的端对端身份验证。对于 Data Web Services,受信任上下文使 Web 服务客户机可以使用一个用户 id 进行身份验证,并且让数据库用相同的用户 id 权限为这个请求服务。受信任上下文这个特性并不仅仅适用于 Data Web Services。要了解更多信息,请查看侧栏 “受信任上下文”。

在某些情况下,由于审计或安全性方面的需求,需要在 Web 服务请求而不是 SOAP 主体内容中传递附加信息。SOAP 消息协议定义了一个 SOAP 报头,可以在其中传递这类信息。DWS 允许在 SOAP 消息报头中传递安全报头标志。SOAP 报头通常由 SOAP 引擎来处理,但是,除此以外,DB2 还允许标记收集一些其他的客户机信息,例如客户机用户 ID、应用程序、计数信息等。

当为 Web 服务环境选择和实现安全模型时,安全报头标记和受信任上下文都是要重点考虑的特性。





回页首


结束语

Data Web Services 使您可以利用数据库操作,轻松地将它们公开为服务。它是一个易于开发、轻量级、健壮的解决方案,支持对数据库的 Web 服务访问。数据库服务器现在可以成为传统的 SOA 客户机和 Web 2.0 客户机的 Web 服务提供者。使用基于标准的 Web 服务公开数据储存库中的数据和业务逻辑,这可以为各种不同的数据使用场景提供支持。现在,您的数据库服务器可以积极地参与到 SOA 基础设施当中。

致谢

在此感谢 Michael Schenker 在 Data Web Services 和插图方面提供的帮助。同时还要感谢各位同事对本文进行了仔细审校并提供宝贵的反馈。



参考资料

学习

获得产品和技术
  • IBM Data Studio:免费下载 Data Studio。

  • DB2 Express-C: 现在可以免费使用 DB2。您可以下载 DB2 Express-C,这是为社区提供的免费版本的 DB2 Express Edition,它具有与 DB2 Express Edtion 相同的核心数据 特性,并为构建和部署应用程序提供了坚实的基础。

  • 用可直接从 developerWorks 下载的 IBM 试用软件 构建您的下一个开发项目。


讨论


关于作者

Vijay Bommireddipalli 在加利福尼亚州圣何塞市 IBM 硅谷实验室的数据服务器解决方案团队工作,帮助客户和合作伙伴开发 DB2 解决方案。在加入这个团队之前,Vijay 是 Warehouse Manager 开发团队的一名开发人员。他在获得马萨诸塞州立大学达特茅斯分校计算机电子与工程硕士学位后于 2000 年 7 月加入 IBM。




对本文的评价










回页首


IBM 公司保留在 developerWorks 网站上发表的内容的著作权。未经IBM公司或原始作者的书面明确许可,请勿转载。如果您希望转载,请通过 提交转载请求表单 联系我们的编辑团队。
    关于 IBM 隐私条约 联系 IBM 使用条款