DB2 应用程序开发概述
用户可以通过下面两种方式访问关系数据库(relational database,RDBMS)中的数据:
直接使用结构化查询语言(Structured Query Language,SQL)存取数据
使用应用程序接口,允许最终用户通过图形用户界面(graphical user interface,GUI)来调用SQL语句进行数据存取,用户不需要知道具体的SQL命令。
现在大多数 DB2 应用程序都是使用 GUI 接口,对最终用户隐藏了数据访问细节。
应用程序开发人员都需要学习某种与语言相关的技术来访问 DB2 数据。例如,Cobol 程序员在他们的应用程序中嵌入 SQL 语句,然后使用预处理器将标记过的 SQL 语句转换成与 DB2 服务器交互的Cobol函数调用。目前,对于 C 程序员,有许多可供选择的数据库访问技术,其中包括嵌入式 SQL、调用层接口(Call Level Interface,CLI)、ODBC、ADO、OLE-DB 和 ADO.Net。
Java™ 程序员目前可以使用 JDBC 和 SQLj 作为直接访问 DB2 的数据库接口。JDBC™ 接口已经作为语言的一部分被定义在Java 2 标准版(Java 2 Standard Edition,J2SE)当中。Java 2 企业版(Java 2 Enterprise Edition,J2EE)为构建分布式 Java 应用程序定义了一组语言扩展。您也许已经听说过这些语言扩展,包括 JavaServer Pages™、servlet、Enterprise JavaBeans(EJB)以及其它语言扩展。这些 Java 语言扩展需要在某种应用程序服务器环境中运行,它们都使用 JDBC 或 SQLj 作为访问 DB2 数据库的接口。
Web 服务的前景如何?
Web 服务实质上是一种新的编程方式,它有助于在一个公司内或跨行业开发和部署松耦合的应用程序。在过去,开发人员往往需要“从头开始”开发大多数应用程序。“代码重用”这个术语常被开发人员挂在嘴边,但由于他们往往只相信自己所开发的代码,因此在大多数情况下并没有将这种概念付诸于实践。现在,由于软件开发已经发展成为一门学科,而且编程语言也在不断地发展,因此重用应用程序模块的能力得到了极大的提高。例如,Java 语言中就内置了许多开发人员经常使用的类库。
随着应用程序规模的增长,它们需要能够在分布式环境中执行。分布式应用程序能提供无限可伸缩性以及其它好处。多年来,为分布式应用程序定义接口一直是一项难题。开发人员可以采用与语言无关的技术,譬如 CORBA(Common Object Request Broker Architecture,公共对象请求代理体系结构),它提供了一个复杂且功能强大的编程模型。除了CORBA这种能够独立于语言的接口之外,还有一些分布式技术在单一的语言环境中工作得很好,譬如 Java RMI(Remote Method Invocation,远程方法调用)和 Microsoft 的 DCOM(Distributed Component Object Model,分布式组件对象模型)。
与以上技术相比,Web 服务通过使用 Web 服务描述语言(Web Service Description Language,WSDL),在应用程序资源提供者和调用者之间提供了一个易于理解的接口。Web 服务还使用了以下技术来帮助简化分布式应用程序的实现:
使用统一描述、发现和集成(Universal Description Discovery and Integration,UDDI)规范的应用程序接口发现机制。
同样也使用 UDDI 的应用程序接口描述。
使用简单对象访问协议(Simple Object Access Protocol,SOAP)的标准消息格式。SOAP 正处在修订过程中,将作为 W3C 的 XML 协议规范发布,。
使用 HTTP 这样的标准传输协议。
使用 TCP/IP 这样的标准网络协议。
Web 服务 — 体系结构
目前,Web 服务的体系结构被定义为几个层次,如 图 1所示。任何 Web 服务都包括这些基本的要素:
WSDL,它提供公共服务描述
SOAP,它提供基于 XML 的消息传递协议
图 1. Web 服务的分层体系结构
WSDL 基于 XML 格式,它将 Web 服务描述为能够进行消息交换的服务访问点的集合,这些消息包含面向文档或面向过程的信息。开发人员可以使用任何编程语言来创建或调用 SOAP 消息。甚至连传输/网络层也很灵活。大多数最初的 Web 服务都使用 HTTP 协议部署在 TCP/IP 网络上,但也可以使用其它方式,包括 WebSphere® MQ 以及其它。
Web 服务体系结构考虑到了应用程序组件的 WSDL 接口可能会发生变化,也可能会随着时间而发生变化。统一描述、发现和集成(Universal Description Discovery and Integration,UDDI)规范帮助分布式应用程序开发人员和实现者解决这些应用程序发展过程中的问题。在因特网上,有 IBM 和 Microsoft(以及其它公司)这样的公司托管着公共的 UDDI 注册中心。开发人员可以使用这些注册中心来发布他们的应用程序接口(用 WSDL 来说明这些接口);另外也可以通过这些注册中心来发现其他开发人员的应用程序接口。当 WSDL 接口发生变化时,开发人员可以在公共的 UDDI 注册中心重新发布自己新的接口。
Web 服务 — 工具
在许多行业(譬如木工和汽车修理工)中,工具是必不可少的。在这一点上,软件开发也不例外。略微了解 Web 服务体系结构之后,软件开发工具可以帮助您在 Web 服务的世界中“遨游”。
IBM 的 WebSphere Studio 是一组开发工具,这些工具可以帮助您创建和维护 Java 应用程序,包括 Web 服务、XML 和用于 DB2 数据的数据访问应用程序。WebSphere Studio Site Developer Advanced 和 WebSphere Studio Application Developer 都提供了可以方便创建 DB2 Web 服务的环境。WebSphere Studio Site Developer 和 WebSphere Studio Application Developer 的关键区别之一是 WebSphere Studio Application Developer 中带有完整的 Enterprise JavaBeans(EJB)开发和测试环境。不过请注意,开发 Web 服务应用程序可以不依赖 EJB。
WebSphere Studio 平台替代了 IBM 的 VisualAge® for Java 产品,它基于 Eclipse( www.eclipse.org)这个开放的开发框架。WebSphere Studio 提供了一些用于创建 Java 应用程序和 DB2 数据的 WSDL 接口的工具。在 WebSphere Studio 中还提供了 UDDI 浏览器,可以帮助用户直接从 WebSphere Studio 向 UDDI 注册中心发布 Web 服务。通过新发行的 WebSphere Studio V5 ,您可以很方便地创建 DB2 用户自定义函数和存储过程。
IBM 的 WebSphere Application Server是符合 J2EE™ 的 Java Web 应用程序服务器,是托管 DB2 Web 服务提供程序的理想平台。
作为 Web 服务提供者和调用者的 DB2
图 2说明了 DB2 是如何完全参与到 Web 服务环境中的:
作为 Web 服务提供者的 DB2
作为 Web 服务调用者的 DB2
图 2. DB2 和 Web 服务环境
作为 Web 服务提供者的 DB2
现在让我们看一下 图 2 左半部分。任何 Web 服务客户机应用程序可以通过 WSDL 接口来访问 DB2 数据库。可以使用 Web 服务对象运行时框架(Web services Object Runtime Framework,WORF)(也称为文档访问定义扩展,DADx)来创建 DB2 数据的 WSDL 接口。简单来说,该功能允许使用 XML 文件来定义对 DB2 数据的访问。该 XML 文件可以包含一系列的操作,每个操作可以包含 DB2 存储过程调用、XML数据的检索和存储、使用 SQL 语句进行的创建、查询、更改、删除等任务。 图 3是一个包含 SQL 操作的示例。
图 3. 说明 SQL SELECT 操作的 employee Web 服务(sample.dadx)
<?xml version="1.0" encoding="UTF-8"?> |
在 图 3中,定义了一个 showemployees 操作,该操作从 DB2 数据库中的 employee 表中返回所有记录。DADx 文件可以包含多个操作,这些操作会作为 Web 服务部署在一个应用程序模块中。
DB2 Web 服务环境( WORF)提供了基础结构来为每个您所定义的操作自动创建 WSDL 接口。WORF 使用 Java servlet 和 JSP 生成作为 Web 应用程序的 Web 服务测试客户机。该测试客户机可以使用简单的 HTTP 或 SOAP 绑定。如果直接使用 Web 浏览器来测试 DB2 Web 服务,HTTP 绑定非常有用。而 SOAP 绑定可以被 Web 服务客户机用来创建分布式应用程序。DB2 Web 服务用 XML 文档或 Java 对象的形式返回数据。如果要对返回的 XML 文档进行处理,可以在像 Java 和 C 这样编程语言中调用 XML 解析器。
至此我已经定义了通过 DADx 来进行 DB2 数据访问的操作,接下来该做什么了?
您必须将 DADx 文件及其运行时环境(Apache SOAP V2.2)部署到受支持的 Java Web 应用程序服务器环境(Apache/Jakarta Tomcat 3.2.x+ 或 IBM 的 WebSphere Application Server V4.x 或更高的发行版)中。在测试和部署完 DB2 Web 服务之后,任何 Web 服务客户机就可以开始使用 DB2 Web 服务了。用 WebSphere Application Server 来部署 DB2 Web 服务可以带来一些附加的好处,譬如,支持共用的数据库连接和集中化管理。还可以使用水平和垂直的伸缩技术来部署 WebSphere,从而