日本国产亚洲-日本国产一区-日本国产一区二区三区-日本韩国欧美一区-日本韩国欧美在线-日本韩国欧美在线观看

當前位置:雨林木風下載站 > 技術開發教程 > 詳細頁面

運用 SOAP Toolkit 2.0 將現有代碼作為 Web 服務提供

運用 SOAP Toolkit 2.0 將現有代碼作為 Web 服務提供

更新時間:2022-05-10 文章作者:未知 信息來源:網絡 閱讀次數:

使用 SOAP Toolkit 2.0 將現有代碼作為 Web 服務提供
使用 .NET 建立分布式應用程序
Steve Kirk 和 Priya Dhawan
Microsoft Developer Network

摘要:本文介紹了使用 Microsoft SOAP Toolkit 版本 2.0 將現有 Microsoft Visual Basic 6.0 代碼作為 Web 服務提供時所進行的數據轉換。

目錄
簡介
現有代碼提供的數據類型
ADO 2x Command 對象
ADO 2x Recordset 對象
Stream 對象
XMLDOM 對象
總結

簡介
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 服務時,接口只不過是應當考慮的諸多因素之一。應考慮的其它因素包括安全性(包括授權、身份驗證和加密)、事務模型、狀態模型、返回錯誤和結果的方式,以及代碼是同步還是異步執行,等等。

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統下載排行

主站蜘蛛池模板: 99久久影视 | 久久综合免费视频 | 色99视频 | 亚洲啊v在线 | 免费毛片二级c片观看动漫 免费毛片视频 | 爱爱视频在线 | 免费 高清 日本社区 | 午夜在线播放免费人成无 | 欧洲精品欧美精品 | 四虎网址在线 | 台湾一级毛片 | 狠狠操狠狠干 | 日韩综合久久 | 国产欧美国产精品第二区 | 欧美日韩国产在线观看一区二区三区 | 91网站网址最新 | 日日噜噜夜夜狠狠视频无 | 免费一区在线观看 | 日本aa大片在线播放免费看 | 亚洲欧美国产精品 | 亚洲欧美日韩精品久久亚洲区 | 99热免费| 国产国语特级一级aa毛片 | 日韩欧美在线视频一区二区 | 欧美人成网站在线看 | 黄色小视频日本 | 国产精品久久新婚兰兰 | 天天干天天干天天天天天天爽 | 手机在线精品视频每日更新 | 精品伊人久久久大香线蕉欧美 | 亚洲第一页在线视频 | 免费看爱爱视频 | a毛片免费观看 | 日韩一级一片 | 一本久| 97插插插| 女人草逼 | 99九九成人免费视频精品 | 在线 亚洲 欧美 | 国产专区一区 | 国产视频第一页 |