乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      使用 SOAP Toolkit 2.0 將現(xiàn)有代碼作為 Web 服務提供

       希望蠟炬 2013-01-22

      使用 SOAP Toolkit 2.0 將現(xiàn)有代碼作為 Web 服務提供

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

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

      目錄

      簡介

      Microsoft?SOAP Toolkit 版本 2.0 簡化了將現(xiàn)有代碼作為 Web 服務提供和使用的任務,MSDN Library 的 SDK 部分中的 SOAP Toolkit 2.0 文檔(英文)對此進行了說明。在服務器端執(zhí)行的一些主要功能是,在現(xiàn)有代碼傳遞的不同數(shù)據(jù)類型的數(shù)據(jù)和 XML 消息(在 Web 服務客戶機和服務器之間使用)之間進行轉換。簡單數(shù)據(jù)類型的轉換可以自動處理,較為復雜的數(shù)據(jù)類型則需要開發(fā)人員提供轉換代碼。

      評估現(xiàn)有代碼是否適合于作為 Web 服務提供時,本文討論的數(shù)據(jù)轉換問題并不是唯一需要考慮的問題。應考慮的其它因素包括對象和狀態(tài)模型、返回的數(shù)據(jù)大小、如何表示已經(jīng)成功、如何返回錯誤信息、安全模型(包括訪問控制、身份驗證和加密)、執(zhí)行模型(同步或異步)、如何分發(fā)代碼,以及事務模型(COM+ 事務或聲明型事務),等等。這些問題將在即將發(fā)表的體系結構主題(英文)文章中進行討論。

      現(xiàn)有代碼提供的數(shù)據(jù)類型

      要介紹現(xiàn)有代碼傳遞的所有數(shù)據(jù)類型的轉換是一個相當大的工程,因此本文介紹了某些最常用的數(shù)據(jù)類型。通過 SOAP Toolkit 代碼進行轉換的一個替代方案是使用 XML 接口對現(xiàn)有代碼進行擴展。本文討論了以下數(shù)據(jù)類型的轉換方法:

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

      ADO 2x Command 對象

      直接訪問數(shù)據(jù)庫的現(xiàn)有代碼經(jīng)常會提供 Microsoft ActiveX? 數(shù)據(jù)對象 (ADO) 的 Command 對象。雖然不能在運行于不同進程中的應用程序層之間傳遞 Command 對象,但可以在同一進程內傳遞該對象。對于單行數(shù)據(jù)實體,通過 Command 對象的輸出參數(shù)返回數(shù)據(jù)比通過 ADO 記錄集返回數(shù)據(jù)效率更高。因此,ADO Command 對象對于返回單行實體數(shù)據(jù)十分有用。

      讀數(shù)據(jù)

      以下示例中的現(xiàn)有代碼返回一個 ADO Command 對象,它包含作為輸出參數(shù)的數(shù)據(jù)。在傳遞給 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

      寫數(shù)據(jù)

      將數(shù)據(jù)作為 Command 對象的參數(shù)傳遞是一種非常有效的數(shù)據(jù)傳遞方法。它還可以進行擴展,并提供了一些類型檢查功能。

      以下示例中,客戶提交給 Web 服務的 XML 數(shù)據(jù)被轉換為 ADO Command 對象的參數(shù),它將被傳遞到現(xiàn)有代碼:

      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 2斷開連接的記錄集通常用于在多層應用程序的各層之間傳遞數(shù)據(jù)。數(shù)據(jù)可以是單行、多行或分層次的行。

      讀數(shù)據(jù)

      本示例中,現(xiàn)有代碼返回一個 ADO Recordset 對象,它包含的層次行數(shù)據(jù)將被轉換為 XML,然后再返回給客戶:

      Dim Doc As MSXML2.DOMDocument
      Set Doc = New MSXML2.DOMDocument
      ' 將記錄集數(shù)據(jù)寫入 XMLDOM 
      rs.Save oDoc, adPersistXML
      ' 將 XML 傳遞到 SOAP Toolkit Serializer
      SoapSerializer.writeXML Doc.xml
      

      寫數(shù)據(jù)

      以下示例中,使用表示層次行數(shù)據(jù)的 XML 填充 ADO Recordset 對象,該對象將被傳遞到現(xiàn)有代碼:

      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 對象

      流提供了一種在應用程序的本地層之間傳遞數(shù)據(jù)的有效方法。它是從 Microsoft SQL Server?2000 中讀取 XML 的主要方法。

      讀數(shù)據(jù)

      以下示例中,現(xiàn)有代碼返回表示層次行數(shù)據(jù)的 XML 流,它將被轉換,然后返回給客戶:

      Dim inStream As ADODB.Stream
      ' pvar 包含現(xiàn)有代碼返回的流對象    
      Set inStream = pvar
      ' 將 XML 數(shù)據(jù)從流傳遞到 SOAP Serializer
      SoapSerializer.writeString inStream.ReadText

      XMLDOM 對象

      XMLDOM 對象是一種在多層應用程序的本地層之間傳遞數(shù)據(jù)的好方法。它提供了接口可擴展性、類型檢查和架構驗證功能。

      讀數(shù)據(jù)

      以下示例中,現(xiàn)有代碼返回一個 XMLDOMDocument 對象,該對象將被轉換,然后返回給客戶:

      `pvar 包含 XMLDOMDocument
      pSoapSerializer.writeXML pvar.xml
      

      寫數(shù)據(jù)

      以下示例中,使用表示層次行數(shù)據(jù)(由客戶提交)的 XML 填充 XMLDOM 對象,然后將該對象傳遞到現(xiàn)有代碼:

      Set oDoc = New MSXML2.DOMDocument
      ' 將 IXMLDOMNode XML 載入 DOMDocument 對象
      `pnode 包含 IXMLDOMNode 對象
      oDoc.loadXML pNode.childNodes(0).xml

      總結

      本文及附帶的示例介紹了有關數(shù)據(jù)轉換的信息。通過數(shù)據(jù)轉換,可以使用 SOAP Toolkit 2.0 將現(xiàn)有代碼作為 Web 服務提供。本文介紹了一些常用的接口對象。

      這些解決方案的性能各異,并且受所傳遞的數(shù)據(jù)大小影響。在本系列后面的文章中,我們將對這些實現(xiàn)方法進行比較。

      評估現(xiàn)有代碼是否適合作為 Web 服務時,接口只不過是應當考慮的諸多因素之一。應考慮的其它因素包括安全性(包括授權、身份驗證和加密)、事務模型、狀態(tài)模型、返回錯誤和結果的方式,以及代碼是同步還是異步執(zhí)行,等等。

        本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,請點擊一鍵舉報。
        轉藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多