• <label id="pxtpz"><meter id="pxtpz"></meter></label>
      1. <span id="pxtpz"><optgroup id="pxtpz"></optgroup></span>

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

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

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

        本類教程下載

        系統下載排行

        主站蜘蛛池模板: 67194成是人免费无码| 成人无码区免费A∨直播| 国产男女爽爽爽爽爽免费视频| 九月丁香婷婷亚洲综合色| 你懂的网址免费国产| 久久精品国产亚洲av麻| 久久久免费精品re6| 亚洲精品熟女国产| 国产一精品一AV一免费孕妇 | 久久久高清日本道免费观看| 亚洲大尺度无码专区尤物| 日本免费在线中文字幕| 亚洲精品国产成人中文| 久久笫一福利免费导航| 亚洲熟妇AV一区二区三区宅男| 日韩a级毛片免费观看| 噜噜噜亚洲色成人网站| 国产成人综合亚洲亚洲国产第一页| a毛片视频免费观看影院| 亚洲色图在线观看| 欧美在线看片A免费观看| 香蕉视频亚洲一级| 亚洲无人区午夜福利码高清完整版| 免费无遮挡无码永久视频| 亚洲人成网站在线观看播放青青| 卡一卡二卡三在线入口免费| 粉色视频免费入口| 亚洲av综合av一区| 青青草免费在线视频| 乱人伦中文视频在线观看免费| 精品亚洲综合久久中文字幕| 久久99九九国产免费看小说| 国产亚洲美女精品久久| 久久久久亚洲AV成人无码| 免费a级毛片高清视频不卡| 免费高清A级毛片在线播放| 国产AV无码专区亚洲AV毛网站| 999久久久免费精品国产| 女人裸身j部免费视频无遮挡| 亚洲视频2020| 日韩免费视频播放|