使用 SOAP Toolkit 2.0 将现有代码作为 Web 服务提供

 

使用 SOAP Toolkit 2.0 将现有代码作为 Web 服务提供

使用 .NET 建立分布式应用程序
Steve Kirk 和 Priya Dhawan
Microsoft Developer Network

摘要:本文介绍了使用 Microsoft SOAP Toolkit 版本 2.0 将现有 Microsoft Visual Basic 6.0 代码作为 Web 服务提供时所进行的数据转换。

目录

简介

Microsoft®SOAP Toolkit 版本 2.0 简化了将现有代码作为 Web 服务提供和使用的任务,MSDN Library 的 SDK 部分中的 SOAP Toolkit 2.0 文档(英文)对此进行了说明。在服务器端执行的一些主要功能是,在现有代码传递的不同数据类型的数据和 XML 消息(在 Web 服务客户机和服务器之间使用)之间进行转换。简单数据类型的转换可以自动处理,较为复杂的数据类型则需要开发人员提供转换代码。

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

现有代码提供的数据类型

要介绍现有代码传递的所有数据类型的转换是一个相当大的工程,因此本文介绍了某些最常用的数据类型。通过 SOAP Toolkit 代码进行转换的一个替代方案是使用 XML 接口对现有代码进行扩展。本文讨论了以下数据类型的转换方法:

  • ADO 2x Command 对象
  • ADO2x Recordset 对象
  • Stream 对象
  • XMLDOM 对象

ADO 2x Command 对象

直接访问数据库的现有代码经常会提供 Microsoft ActiveX® 数据对象 (ADO) 的 Command 对象。虽然不能在运行于不同进程中的应用程序层之间传递 Command 对象,但可以在同一进程内传递该对象。对于单行数据实体,通过 Command 对象的输出参数返回数据比通过 ADO 记录集返回数据效率更高。因此,ADO Command 对象对于返回单行实体数据十分有用。

读数据

以下示例中的现有代码返回一个 ADO Command 对象,它包含作为输出参数的数据。在传递给 Web 服务的客户之前,Custom Type Mapper 中的代码使用 SoapSerializer 对象对 Command 对象进行转换:

With SoapSerializer    
    `转换 CommandType
    .startElement "CommandType"
    .writeString Cmd.CommandType
    .endElement
    `转换 CommandText
    .startElement "CommandText"
    cmdText = Cmd.CommandText
    cmdText = Left(Cmd.CommandText, Len(cmdText) - 8)
    cmdText = Right(cmdText, Len(cmdText) - 7)    
    .writeString cmdText
    .endElement
    `转换 Parameters 集合
    .startElement "Parameters"
    For i = 0 To oCmd.Parameters.Count - 1
        .startElement Right(oCmd.Parameters(i).Name, _
            Len(oCmd.Parameters(i).Name) - 1)
            .startElement "Direction"
            .writeString oCmd.Parameters(i).Direction
            .endElement
            .startElement "Type"
            .writeString oCmd.Parameters(i).Type
            .endElement
            .startElement "Size"
            .writeString oCmd.Parameters(i).Size
            .endElement
            .startElement "Value"
            .writeString oCmd.Parameters(i).Value
            .endElement
        .endElement
    Next
    .endElement
End With
写数据

将数据作为 Command 对象的参数传递是一种非常有效的数据传递方法。它还可以进行扩展,并提供了一些类型检查功能。

以下示例中,客户提交给 Web 服务的 XML 数据被转换为 ADO Command 对象的参数,它将被传递到现有代码:

Dim Cmd As ADODB.Command
Dim Param As ADODB.Parameter
' pNode 是包含客户提交的 XML 的 MSXML2.IXMLDOMNode 
' 实例化一个 ADO Command 对象
Set Cmd = New ADODB.Command
With Cmd
    ' 应用 CommandType 和 CommandText
    .CommandType = _
        CInt(pNode.selectSingleNode("CommandType").nodeTypedValue)
    .CommandText = pNode.selectSingleNode("CommandText").nodeTypedValue
    ' 填充 Parameters 集合
    Set nodeParent = pNode.selectSingleNode("Parameters")
    For i = 0 To nodeParent.childNodes.length - 1
        Set nodeParameter = nodeParent.childNodes(i)
        Set Param = New ADODB.Parameter
        With Param
            .Name = "@" + nodeParameter.nodeName
            .Direction = _
                nodeParameter.selectSingleNode("Direction").nodeTypedValue
            .Type = nodeParameter.selectSingleNode("Type").nodeTypedValue
            .Size = nodeParameter.selectSingleNode("Size").nodeTypedValue
            .Value = factory.getMapper(enXSDstring, _
                Nothing).Read(nodeParameter.selectSingleNode("Value"), _
                    bstrEncoding, encodingMode, lFlags)
        End With
    .Parameters.Append oParam
    Next
End With

ADO 2x Recordset 对象

ADO 2x 断开连接的记录集通常用于在多层应用程序的各层之间传递数据。数据可以是单行、多行或分层次的行。

读数据

本示例中,现有代码返回一个 ADO Recordset 对象,它包含的层次行数据将被转换为 XML,然后再返回给客户:

Dim Doc As MSXML2.DOMDocument
Set Doc = New MSXML2.DOMDocument
' 将记录集数据写入 XMLDOM 
rs.Save oDoc, adPersistXML
' 将 XML 传递到 SOAP Toolkit Serializer
SoapSerializer.writeXML Doc.xml
写数据

以下示例中,使用表示层次行数据的 XML 填充 ADO Recordset 对象,该对象将被传递到现有代码:

Dim rs As ADODB.Recordset
Dim Doc As MSXML2.DOMDocument
Set rs = New ADODB.Recordset
Set Doc = New MSXML2.DOMDocument
' 将 XML 载入 XMLDOMDocument   
Doc.loadXML pNode.xml
' 使用来自 XMLDOMDocument 的 XML 填充记录集
rs.Open Doc

Stream 对象

流提供了一种在应用程序的本地层之间传递数据的有效方法。它是从 Microsoft SQL Server™2000 中读取 XML 的主要方法。

读数据

以下示例中,现有代码返回表示层次行数据的 XML 流,它将被转换,然后返回给客户:

Dim inStream As ADODB.Stream
' pvar 包含现有代码返回的流对象    
Set inStream = pvar
' 将 XML 数据从流传递到 SOAP Serializer
SoapSerializer.writeString inStream.ReadText

XMLDOM 对象

XMLDOM 对象是一种在多层应用程序的本地层之间传递数据的好方法。它提供了接口可扩展性、类型检查和架构验证功能。

读数据

以下示例中,现有代码返回一个 XMLDOMDocument 对象,该对象将被转换,然后返回给客户:

`pvar 包含 XMLDOMDocument
pSoapSerializer.writeXML pvar.xml
写数据

以下示例中,使用表示层次行数据(由客户提交)的 XML 填充 XMLDOM 对象,然后将该对象传递到现有代码:

Set oDoc = New MSXML2.DOMDocument
' 将 IXMLDOMNode XML 载入 DOMDocument 对象
`pnode 包含 IXMLDOMNode 对象
oDoc.loadXML pNode.childNodes(0).xml

总结

本文及附带的示例介绍了有关数据转换的信息。通过数据转换,可以使用 SOAP Toolkit 2.0 将现有代码作为 Web 服务提供。本文介绍了一些常用的接口对象。

这些解决方案的性能各异,并且受所传递的数据大小影响。在本系列后面的文章中,我们将对这些实现方法进行比较。

评估现有代码是否适合作为 Web 服务时,接口只不过是应当考虑的诸多因素之一。应考虑的其它因素包括安全性(包括授权、身份验证和加密)、事务模型、状态模型、返回错误和结果的方式,以及代码是同步还是异步执行,等等。

阅读终点,创作起航,您可以撰写心得或摘录文章要点写篇博文。去创作
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: SOAP Toolkit COM是微软推出的一种用于开发和使用SOAP协议的工具。SOAP(Simple Object Access Protocol)是一种基于XML的协议,用于在网络上进行应用程序之间的通信。 使用SOAP Toolkit COM,开发者可以轻松地创建和调用SOAP Web服务。它提供了一套COM对象,可以在Windows操作系统上运行,并提供了一些接口和方法,用于构建SOAP消息、发送和接收SOAP请求和响应。 具体来说,使用SOAP Toolkit COM可以完成以下任务: 1. 构建SOAP消息:开发者可以使用SOAP Toolkit COM提供的接口和方法,将需要传输的数据封装成SOAP消息。SOAP消息使用XML格式,使用SOAP Toolkit COM可以轻松地创建SOAP Envelope、Header和Body,并将数据插入到Body中。 2. 发送SOAP请求:一旦构建好SOAP消息,开发者可以使用SOAP Toolkit COM提供的方法将SOAP请求发送到远程的SOAP Web服务SOAP Toolkit COM将自动处理底层的网络通信,确保请求能够正确发送到目标地址。 3. 接收SOAP响应:一旦远程的SOAP Web服务处理完请求并生成了响应,开发者可以使用SOAP Toolkit COM提供的方法接收SOAP响应。SOAP Toolkit COM将对接收到的响应进行解析,并提取出其中的数据供开发者使用。 总的来说,SOAP Toolkit COM是一个强大的工具,使得开发者能够方便地开发和使用SOAP协议。它提供了一系列的接口和方法,使得构建SOAP消息、发送和接收SOAP请求和响应变得非常简单。对于需要进行跨平台、跨语言的应用程序通信的开发者来说,SOAP Toolkit COM是一个不错的选择。 ### 回答2: soap toolkit(简称STK)是一种软件开发工具,用于在使用SOAP协议的应用程序中创建、发布和调用Web服务SOAP(Simple Object Access Protocol)是一种用于在Web上进行通信和交换数据的协议。 使用STK可以简化开发人员创建和管理Web服务的过程。它提供了一系列的工具和组件,可以帮助开发人员创建SOAP消息和处理SOAP消息的接收和发送。 通过STK,开发人员可以使用多种编程语言,如C++、Java、C#等,创建SOAP消息。STK提供了一些模块和类库,为开发人员提供了处理SOAP消息所需的功能和接口。 除了创建SOAP消息,STK还提供了一些发布和调用Web服务的功能。开发人员可以使用STK创建SOAP服务器,将自己的应用程序发布为Web服务。同时,开发人员也可以使用STK创建SOAP客户端,以便调用其他Web服务。 STK还提供了一些附加的功能,如安全性和可靠性。开发人员可以使用STK实现SOAP消息的加密和解密,确保消息的安全传输。此外,STK还提供了可靠消息传递的功能,以确保消息的可靠性和完整性。 总之,soap toolkit是一种方便的工具,用于创建、发布和调用基于SOAP协议的Web服务。它简化了开发人员的工作,提供了一些接口和功能,使开发人员能够轻松地处理SOAP消息和进行Web服务的开发。 ### 回答3: Soap Toolkit COM是一种用于创建和编写SOAP(Simple Object Access Protocol)Web服务的开发工具包。它是由微软公司提供的一套旧版工具,用于构建和使用Web Service描述语言(WSDL)和SOAP协议。 这个工具包采用COM(Component Object Model)架构,提供了一个简单而灵活的方式来实现SOAP Web服务。通过使用SOAP Toolkit COM,开发人员可以轻松地将现有的应用程序转换为Web服务,并使用HTTP协议进行通信。 使用SOAP Toolkit COM,开发人员可以将应用程序的功能作为Web服务提供给其他应用程序使用。它提供了一种标准的方式来进行跨平台和跨语言的通信,使得不同技术和平台之间的集成变得更加容易。 SOAP Toolkit COM还提供了一些工具和实用程序,用于帮助开发人员生成WSDL文件、解析SOAP消息、处理SOAP头和处理SOAP错误。它还支持一些安全性特性,如身份验证和加密,以保护Web服务的安全性。 然而,需要注意的是,SOAP Toolkit COM已经是一种过时的技术,微软已不再更新和支持它。现在,更常见且推荐使用的是WCF(Windows Communication Foundation)和ASP.NET Web API等技术来构建和使用Web服务。 总之,SOAP Toolkit COM是一种用于构建和使用SOAP Web服务的开发工具包。它提供了一种简单而灵活的方式来实现跨平台和跨语言的通信,并帮助开发人员将现有应用程序转换为Web服务。然而,它已经过时,不再推荐使用,而应使用更现代的技术来开发Web服务

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Zee

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值