使用SQL2000将现有代码作为Web服务提供

作者:limeinan 时间:2009-02-19 17:20:00 

SQL Server 2000 的 XML 功能可以简化将现有代码作为 Web 服务提供的任务。本文集中讨论了传入和传出 Transact SQL 代码的数据与 XML 消息(在 Web 服务客户机和服务器之间使用)之间的转换。

评估现有代码是否适合于作为 Web 服务提供时,本文讨论的数据转换问题并不是唯一需要考虑的问题。应考虑的其它因素包括状态模型、返回的数据大小、如何表示已经成功、如何返回错误信息、安全模型(包括访问控制、身份验证和加密)、执行模型(同步或异步)、如何分发代码,以及事务模型(COM+ 事务或声明事务),等等。这些问题将在即将发表的体系结构主题(英文)文章中进行讨论。

SQL Server 2000 中的现有代码

SQL Server 2000 的 XML 功能简化了将现有 Transact SQL 代码作为 Web 服务提供的过程。这依赖于 SQL Server 2000 中的两项 XML 功能:

对 Transact SQL 的扩展可将关系型数据转换为 XML,并且可以对传入的 XML 进行语法分析。

利用 ISAPI 模板功能,可将传入的 HTTP 请求应用于 Transact SQL 代码,并且可以使用 XSL 样式表对传出的 XML 进行转换。只要可以使用 FORXML 子句“选定”数据,SQL Server 就可以将 XML 返回到 XML 模板。

SQL Server 2000 XML 模板

SQL Server 2000 XML 模板以透明方式执行以下任务:

对传入的 HTTP 请求进行解码

将参数应用于 Transact SQL 查询

执行查询

使用 XSL 转换传出的 XML

读数据

以下示例执行 ISAPI 模板中指定的 Transact SQL。如果必要,可将 HTTP 请求传递到 Transact SQL 代码,并由该代码进行语法分析。根据模板中指定的 .xsl 文件,返回的 XML 将被转换为 SOAP 并返回给 Web 服务的客户:

<ROOT

xmlns:sql="urn:schemas-microsoft-com:xml-sql"

sql:xsl="BDAdotNetWebService3Example1.xsl">

<Orders>

<sql:query>

Exec GetOrdersXML

</sql:query>

</Orders>

</ROOT>

以下是模板中引用的 XSL 样式表,它将存储过程中的 XML 转换为 SOAP:

<?xml version="1.0"?>

<xsl:stylesheet version="1.0"

xmlns:xsl="http://www.w3.org/1999/XSL/Transform"

xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"

xmlns:m="Some-URI">

<xsl:template match="/">

<SOAP-ENV:Envelope>

<SOAP-ENV:Body>

<m:BDAdotNetWebService3Example1Response >

<xsl:copy-of select="//Orders"/>

</m:BDAdotNetWebService3Example1Response>

</SOAP-ENV:Body>

</SOAP-ENV:Envelope>

</xsl:template>

</xsl:stylesheet>

最后,以下存储过程代码在 Transact SQL SELECT 语句中使用 FOR XML EXPLICIT 子句来返回 XML。&ldquo;订单&rdquo;和&ldquo;订单详细信息&rdquo;从单独的表中选择,然后合并到 XML 层次中:

标签:SQL2000,Web服务
0
投稿

猜你喜欢

  • 带你了解MySQL中的事件调度器EVENT

    2024-01-18 05:55:16
  • innerHTML,outerHTML,innerText,outerText用法

    2008-02-15 12:22:00
  • python中常见进制之间的转换方式

    2021-08-15 13:27:48
  • 快速一键生成Python爬虫请求头

    2022-05-21 01:00:53
  • Display SQL Server Login Mode

    2024-04-18 10:55:50
  • pytorch构建多模型实例

    2021-05-14 13:30:00
  • golang beego框架环境搭建过程

    2024-02-13 03:29:39
  • python 切换root 执行命令的方法

    2021-10-16 22:33:43
  • 高效的mysql分页方法及原理

    2024-01-20 04:23:46
  • 验证码-挑战你的智慧

    2008-09-10 13:08:00
  • MySQL启动连接的命令以及与PHP程序连接的基本语法

    2023-11-14 22:27:26
  • Python3实现飞机大战游戏

    2022-08-25 05:29:03
  • python 日志增量抓取实现方法

    2022-01-08 15:43:07
  • Python语言描述KNN算法与Kd树

    2021-07-24 05:10:35
  • Python脚本实现Zabbix多行日志监控过程解析

    2021-12-27 09:40:47
  • Vue组件的通信方式详解

    2024-04-26 17:39:23
  • opencv+python识别七段数码显示器的数字(数字识别)

    2022-03-03 00:01:51
  • Python灰度变换中灰度切割分析实现

    2021-10-05 12:07:49
  • SQL Server 自动增长清零的方法

    2012-01-05 19:07:47
  • python实现决策树分类算法

    2022-08-10 12:15:56
  • asp之家 网络编程 m.aspxhome.com