将 OData 用于 IBM DB2 和 Informix

分步指南

Comments
免费下载:IBM® Data Studio V3.1 免费版或者 IBM® Optim® Database Administrator 试用版
下载更多的 IBM 软件试用版,并加入 IBM 软件下载与技术交流群组,参与在线交流。

简介

OData(请参阅 参考资料 一节了解更多信息)是一个用于数据访问 Web API 的规范,旨在使数据库中的表等资源可从 Web 浏览器和移动设备访问。OData 指定通过 HTTP 对资源(数据或应用程序)的创建、读取、更新、删除 (CRUD) 和查询。它还指定了将结果格式化为 ATOM (XML) 和 JSON 的方式。OData 类似于一种用于 Web 的微型 ODBC 或 JDBC。更准确地讲,OData 允许客户端构造 URI 来命名一个实体集,过滤它包含的实体,并遍历与相关实体和实体集合之间的关系。

图 1 显示了如何通过 ADO.Net 支持在 Web 上公开 DB2 或 Informix。Microsoft Visual Studio 提供了一些工具,使数据库数据可通过 HTTP 在 Web 上公开。数据库数据可通过 OData 语法从 Web 浏览器和其他 OData 使用程序创建、更新、删除和查询(请参阅 参考资料 一节,了解有关的更多信息)。

图 1. OData 概述
该图在左侧显示了 Web 浏览器,它们通过固定查询和 CRUD 服务连接到 OData 服务提供程序,后者连接到 DB2 或 Informix 数据库
该图在左侧显示了 Web 浏览器,它们通过固定查询和 CRUD 服务连接到 OData 服务提供程序,后者连接到 DB2 或 Informix 数据库

图 2 显示了 CSDL(概念模式定义语言),CSDL 是一种 XML 表示法,它使用可通过 OData 访问的一种实体关系模型来描述基础资源。

图 2. CSDL(概念模式定义语言)
该图在左侧显示了 Web 浏览器,它通过固定查询和 CRUD 服务连接到 OData CSDL、OData Service Provider、ADO.Net 支持解决方案和 DB2 或 Informix
该图在左侧显示了 Web 浏览器,它通过固定查询和 CRUD 服务连接到 OData CSDL、OData Service Provider、ADO.Net 支持解决方案和 DB2 或 Informix

在开发时常常会用到 CSDL,例如在工具或模型映射器中。CSDL 是可选的,由 Visual Studio 生成,可用来帮助用户应用程序理解公开的数据的结构。CSDL 类似于 JDBC 和 ODBC 中的元数据,可帮助客户端应用程序理解它们访问的内容。

在 Web 上使用 OData 公开示例数据库中的表

后面几节将详细介绍如何执行以下操作。

  • 执行初始设置,比如定义数据库连接。
  • 创建一个 ADO.Net 实体模型。
  • 选择将通过 OData 公开的 DB2 表。
  • 为所选的表创建一个 OData 服务(WCF 服务)。
  • 测试 OData 服务。

该描述使用合并到 Microsoft Visual Studio 中 OData 运行时。但是,在 Visual Studio 中测试了支持之后,可以使用其他 OData 运行时。请参阅 参考资料 一节,了解有关的更多信息。

创建一个新网站

  1. 启动 Visual Studio。在 File 菜单中单击 New Web Site。系统会显示一个 New Web Site 对话框。
  2. Installed Templates 下的左侧窗格中,选择 Visual C#
  3. 在中央窗格中,选择 ASP.NET Dynamic Entities Web Site
  4. Web location 框中,选择 File System,然后输入您希望存储网站页面的文件夹名称。例如,键入文件夹名称 C:\WebSites\DB2OData 并单击 OK。Visual Studio 创建好了该网站,如图 3 所示。
图 3. 一个新网站
该图显示了已选中的 ASP.NET Dynamic Entities Web Site
该图显示了已选中的 ASP.NET Dynamic Entities Web Site

向 Server Explorer 添加一个数据连接

  1. Tools 菜单中选择 Connect to Database。此时会显示 Add Connection 对话框。
  2. 单击 IBM DB2 and IDS Servers,如图 4 所示,然后单击 Continue
    图 4. 向 Server Explorer 添加数据连接
    该图显示了已选中的 IBM DB2 and IDS Servers
    该图显示了已选中的 IBM DB2 and IDS Servers
  3. 如图 5 所示,在 Select or enter server name 框中,输入 127.0.0.1/localhost 或主机名。在 User ID 框中,键入 db2admin。在 Password 框中,输入您的密码。选择 Save my password 复选框。
    图 5. 连接信息
    该图显示了连接信息
    该图显示了连接信息
  4. 在 Select or enter a Database Name 框中,为数据库键入一个名称,比如 SAMPLE
  5. 单击 Test Connection,然后单击 OK
  6. 如图 6 所示,在 Server Explorer 中,您可以选择展开 Data Connections 并查看数据库表。
    图 6. 数据库表
    该图显示了数据库表的资源管理器视图
    该图显示了数据库表的资源管理器视图

向网站添加数据并创建一个新的 ADO.NET 实体数据模型

需要一个实体数据模型来使用 WCF 数据服务公开 DB2 数据。执行以下步骤,向站点添加数据,并创建 ADO.NET 实体数据模型。

  1. 在 Solution Explorer 中,右键单击项目,然后单击 New Item。将显示 Add New Item 对话框。
  2. Installed Templates 下的左侧窗格中,选择 Visual C#。在中央面板中,选择 ADO.NET Entity Data Model
  3. Name 框中,为数据库模型键入一个名称。例如,输入名称 DB2.edmx,然后单击 Add,如图 7 所示。
    图 7. 创建实体数据模型
    该图显示了已选中的 ADO.NET Entity Data Model
    该图显示了已选中的 ADO.NET Entity Data Model
  4. 当获得提示时单击 Yes
  5. 从 Entity Data Model Wizard 中选择 Generate from database,然后单击 Next,如图 8 所示。
    图 8. Entity data model wizard
    该图显示了已选中的 Generate from database
    该图显示了已选中的 Generate from database

    此时将会显示 Choose Your Data Connection 对话框。
  6. 在下拉列表中,选择您以前配置的连接。例如,db2admin@SAMPLE。单击 Yes 以在连接字符串中包含敏感数据(用户名和密码),然后单击 Next,如图 9 所示。
    图 9. 选择您的数据连接
    该图显示了数据连接的详细信息
    该图显示了数据连接的详细信息

    此时将会显示 Choose Your Database Objects 对话框。
  7. 单击三角形展开 Tables 节点。选择 DEPARTMENTEMPLOYEE 表的复选框,然后单击 Finish,如图 10 所示。
    图 10. 选择您的数据对象
    该图显示了已选中的 department 和 employee 表
    该图显示了已选中的 department 和 employee 表
  8. 此时将会显示具有 Entity Data Model 的 DB2.edmx 页面,如图 11 所示。
    图 11. DB2.edmx 页面
    该图显示了 employee 和 department 表的实体数据模型
    该图显示了 employee 和 department 表的实体数据模型

注册数据内容

  1. 如图 12 和图 13 所示,从 Solution Explorer 中打开 Global.asax 文件。
  2. 取消注释包含 DefaultModel.RegisterContext 方法的行。
  3. 将上下文类型设置为 SAMPLEModel.SAMPLEEntities,将变量 ScaffoldAllTables 设置为 True
    图 12. Global.asax(DefaultModel.RegisterContext 方法 - 已注释)
    包含 DefaultModel.RegisterContext 方法的行已注释
    包含 DefaultModel.RegisterContext 方法的行已注释
    图 13. Global.asax(DefaultModel.RegisterContext 方法 - 已取消注释)
    包含 DefaultModel.RegisterContext 方法的行已取消注释
    包含 DefaultModel.RegisterContext 方法的行已取消注释
  4. 保存 Global.asax 文件。

添加 WCF 数据服务

  1. 从 Solution Explorer 中右键单击项目名称 DB2OData。此时将会显示 Add New Item 对话框。
  2. 在 Installed Templates 下,在左侧窗格中,选择 Visual C#,在中央窗格中单击 WCF Data Service
  3. 在 Name 框中,为数据服务输入一个名称,比如 WcfDataService.svc,然后单击 Add,如图 14 所示。
    图 14. 添加 WCF 数据服务
    该图显示了已选中的 WCF Data Service
    该图显示了已选中的 WCF Data Service

配置 WCF 数据服务

  1. 如图 15 所示,在 WcfDataService.cs 文件中,将代码注释 /* TODO: put your data source class name here */ 替换为 SAMPLEModel.SAMPLEEntities
    图 15. 数据源类名和 MyEntitySet
    MyEntitySet 已突出显示
    MyEntitySet 已突出显示
  2. 取消注释包含 config.SetEntitySetAccessRule 的代码。将 MyEntitySet 替换为一个星号 “*”,如图 16 所示。
    图 16. 更改 WcfDataService.cs 的代码
    WcfDataService.cs - 按照上面的第 1 步和第 2 步更改代码
    WcfDataService.cs - 按照上面的第 1 步和第 2 步更改代码

测试 WCF 数据服务

  1. 要运行应用程序,从 Debug 菜单中单击 Start Debugging。如果系统提示您启用调试,请单击 OK
  2. 在 Web 浏览器中,输入一个 URI,以便通过数据服务从一个 DB2 表返回所有记录。
  3. 输入 http://localhost:15452/DB2OData/WcfDataService.svc/ 查看已包含的实体,如图 17 所示。
    图 17. WcfDataService.svc
    XML 文件包含 DEPARTMENT 和 EMPLOYEE 实体
    XML 文件包含 DEPARTMENT 和 EMPLOYEE 实体

    要查看此文件的文本,请查看本文的 下载 一节中的 WcfDataService.svc.txt 文件。
  4. 输入 http://localhost:15452/DB2OData/WcfDataService.svc/DEPARTMENTs 查看 Department 表,如图 18 所示。
    图 18. Department 表
    XML 格式的 Department 表
    XML 格式的 Department 表

    (参见图 18 的 大图。)

    请参阅 下载 一节,了解此图的文本。
  5. 要搜索 Employee ID = 000010,可将 http://localhost:15452/DB2OData/WcfDataService.svc/EMPLOYEEs('000010') 粘贴到 URL 中,如图 19 所示。
    图 19. Employee 表
    XML 格式的 Employee 表
    XML 格式的 Employee 表

    (参见图 19 的 大图。)

    请参阅 下载 一节,了解此图的文本。
  6. 可使用加载项(比如 Bamboo for Firefox)查看格式化的 XML 数据,如图 20 和图 21 所示。
    图 20. 格式化的 employee 表
    该图显示了 Employee 表中每行的数据
    该图显示了 Employee 表中每行的数据
    图 21. 格式化的 department 表
    该图显示了 Department 表中每行的数据
    该图显示了 Department 表中每行的数据

结束语

本文介绍了如何使用 Microsoft Visual Studio,通过 OData 和 HTTP 公开 DB2 数据,使得从移动设备和 Web 浏览器访问 DB2 成为可能。OData 库可用于多种移动设备(请参阅 参考资料 一节了解有关的更多信息)。类似的 OData 支持可用于 Informix 和 DB2 on z/OS。

目前,无法通过 Visual Studio 支持时态和 XML 数据。


下载资源


相关主题


评论

添加或订阅评论,请先登录注册

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Information Management
ArticleID=836875
ArticleTitle=将 OData 用于 IBM DB2 和 Informix
publish-date=09242012