當(dāng)前位置:工程項目OA系統(tǒng) > 泛普各地 > 上海OA系統(tǒng) > 上海OA信息化
使用 .NET 框架將現(xiàn)有代碼作為Web服務(wù)提供
使用 .NET 框架將現(xiàn)有代碼作為Web服務(wù)提供
使用 .NET 建立分布式應(yīng)用程序
Steve Kirk
和 Priya Dhawan
Microsoft Developer Network
摘要:本文介紹了使用 ASP.NET 將現(xiàn)有 Microsoft Visual Basic 6.0 代碼作為 Web 服務(wù)提供時所進(jìn)行的數(shù)據(jù)轉(zhuǎn)換。適用于 Microsoft .NET SDK 和 Microsoft Visual Studio.NET 的 Beta 1 版。
簡介
.NET 框架簡化了將 .NET 代碼作為 Web
服務(wù)提供的任務(wù)。.NET 框架開發(fā)人員指南中的 ASP.NET Web 服務(wù)和 ASP.NET Web
服務(wù)客戶機(jī)(英文)對此進(jìn)行了說明。之所以能夠?qū)崿F(xiàn)這種簡化,其中一個原因是 .NET 框架提供了一系列規(guī)則,用于將復(fù)雜的 .NET 數(shù)據(jù)類型轉(zhuǎn)換為
XML(序列化)以及反向轉(zhuǎn)換(反序列化)。
編寫為 .NET 之前的類的現(xiàn)有代碼通過特定于語言的數(shù)據(jù)類型或 COM 對象來傳遞數(shù)據(jù),因此不能依賴于相同的標(biāo)準(zhǔn)規(guī)則將這些數(shù)據(jù)類型序列化為 XML。本文介紹了將現(xiàn)有 Microsoft? Visual Basic 6.0 代碼作為 ASP.NET Web 服務(wù)提供時所需的數(shù)據(jù)轉(zhuǎn)換。
評估現(xiàn)有代碼是否適合于作為 Web 服務(wù)提供時,本文討論的數(shù)據(jù)轉(zhuǎn)換問題并不是唯一需要考慮的問題。應(yīng)考慮的其它因素包括對象和狀態(tài)模型、返回的數(shù)據(jù)大小、如何表示已經(jīng)成功、如何返回錯誤信息、安全模型(包括訪問控制、身份驗證和加密)、執(zhí)行模型(同步或異步)、如何分發(fā)代碼,以及事務(wù)模型(COM+ 事務(wù)或聲明型事務(wù)),等等。這些問題將在即將發(fā)表的體系結(jié)構(gòu)主題(英文)文章中進(jìn)行討論。
現(xiàn)有代碼提供的數(shù)據(jù)類型
討論現(xiàn)有代碼傳遞的所有數(shù)據(jù)類型的轉(zhuǎn)換將是一個相當(dāng)大的工程,因此本文只介紹一些最常用的數(shù)據(jù)類型,以及
XML(作為字符串),因為如果使用 XML 對現(xiàn)有代碼進(jìn)行擴(kuò)展,那么 XML
就可以涵蓋幾乎所有其它的數(shù)據(jù)類型。本文討論以下數(shù)據(jù)類型的轉(zhuǎn)換方法:
ADO 2x Command 對象
ADO2x Recordset 對象
Stream 對象
XMLDOM 對象
XML
ADO 2x Command 對象
直接訪問數(shù)據(jù)庫的現(xiàn)有代碼經(jīng)常會提供 Microsoft ActiveX? 數(shù)據(jù)對象 (ADO) 的 Command
對象。雖然不能在運行于不同進(jìn)程中的應(yīng)用程序?qū)又g傳遞 Command 對象,但可以在同一進(jìn)程內(nèi)傳遞該對象。對于單行數(shù)據(jù)實體,通過 Command
對象的輸出參數(shù)返回數(shù)據(jù)比通過 ADO 記錄集返回數(shù)據(jù)效率更高。因此,ADO Command 對象對于返回單行實體數(shù)據(jù)十分有用。
讀數(shù)據(jù)
以下示例中的現(xiàn)有代碼返回一個 ADO Command
對象,它包含作為輸出參數(shù)的數(shù)據(jù)。Command 對象的 Parameters 集合轉(zhuǎn)換為 XML 并返回給 Web 服務(wù)的客戶:
' 現(xiàn)有代碼返回 ADO Command 對象
Cmd = CType(EC.Example1(),
ADODB.Command)
' 使用 XmlTextWriter 和 StringWriter 轉(zhuǎn)換 Command 對象的
Parameters 集合
' 初始化 stringwriter 和 xmlwriter 以返回 xml
字符串
strWriter = New StringWriter()
xmlWriter = New
XmlTextWriter(strWriter)
' 在 Parameters 集合內(nèi)循環(huán),寫入名稱和值
For i = 0 To
Cmd.Parameters.Count -
1
xmlwriter.WriteElementString(Cmd.Parameters(i).Name.Substring(1),_
Cmd.Parameters(i).Value.ToString)
Next
' 將 xml
作為字符串返回
Example1 =
strWriter.GetStringBuilder.ToString()
寫數(shù)據(jù)
將數(shù)據(jù)作為
Command 對象的參數(shù)傳遞是一種非常有效的數(shù)據(jù)傳遞方法。它還可以進(jìn)行擴(kuò)展,并提供了一些類型檢查功能。不幸的是,由于 Beta 1 中存在缺陷,Command
對象產(chǎn)生的數(shù)據(jù)無法傳遞到現(xiàn)有代碼。Beta 2 中解決了這個問題。Beta 1 的解決方法是對現(xiàn)有的 VB 6 代碼進(jìn)行擴(kuò)展,接受
XML。
ADO2x Recordset 對象
ADO 2x
斷開連接的記錄集通常用于在多層應(yīng)用程序的各層之間傳遞數(shù)據(jù)。數(shù)據(jù)可以是單行、多行或分層次的行。
讀數(shù)據(jù)
本示例中,現(xiàn)有代碼返回一個 ADO Recordset
對象,它包含的層次行數(shù)據(jù)將被轉(zhuǎn)換為 XML,然后由 Web 服務(wù)返回:
' 現(xiàn)有代碼返回記錄集
RS = CType(EC.Example3(),
ADODB.Recordset)
' 實例化一個接收記錄集數(shù)據(jù)的流
Stream = New
ADODB.Stream()
' 將記錄集的 XML 表示寫入流
RS.Save(Stream,
ADODB.PersistFormatEnum.adPersistXML)
' 將 XML 作為字符串從流返回
Example3 =
Stream.ReadText
寫數(shù)據(jù)
以下示例中,使用表示層次行數(shù)據(jù)的 XML 填充 ADO
Recordset 對象,該對象將被傳遞到現(xiàn)有代碼:
' 實例化一個記錄集對象
RS = New ADODB.Recordset()
'
實例化一個流對象
Stream = New ADODB.Stream()
'
打開流對象
Stream.Open()
' 將 XML
寫入流
Stream.WriteText(RsXML)
' 將指針定位到流的開頭
Stream.Position =
0
' 使用流中的 XML 數(shù)據(jù)打開記錄集
RS.Open(Stream)
'
將記錄集傳遞到現(xiàn)有代碼
EC.Example4(RS)
Stream
對象
流提供了一種在應(yīng)用程序的本地層之間傳遞數(shù)據(jù)的有效方法。它是從 Microsoft SQL Server?2000 中讀取
XML 的主要方法。
讀數(shù)據(jù)
以下示例中,現(xiàn)有代碼返回表示層次行數(shù)據(jù)的 XML
流,它被作為字符串讀取,并由 Web 服務(wù)返回:
Dim Stream As ADODB.Stream
Stream = CType(EC.Example5(),
adodb.stream)
Example5 = Stream.ReadText
XMLDOM
對象
XMLDOM
對象是一種在多層應(yīng)用程序的本地層之間傳遞數(shù)據(jù)的好方法。它提供了接口可擴(kuò)展性、類型檢查和架構(gòu)驗證功能。
讀數(shù)據(jù)
以下示例中,現(xiàn)有代碼返回一個 XML 文檔對象模型
(XMLDOM),它被轉(zhuǎn)換為 XML 字符串并由 Web 服務(wù)返回:
Dim Doc As MSXML2.DOMDocument
' 現(xiàn)有代碼返回 XMLDOM
對象
Doc = CType(EC.Example6(), msxml2.DOMDocument)
' 從 DOM 對象返回
XML
Example6 =
Doc.xml
寫數(shù)據(jù)
以下示例中,使用表示層次行數(shù)據(jù)的 XML 填充 XMLDOM
對象,并將該對象傳遞到現(xiàn)有代碼:
Dim Doc As MSXML2.DOMDocument
' 實例化一個 XMLDOMDocument 對象
Doc = New MSXML2.DOMDocument()
' 將 XML 載入
DOM
Doc.loadXML(orderXML)
' 將 DOM
傳遞到現(xiàn)有代碼
EC.Example7(Doc)
XML 字符串
XML
是一種在層與層之間傳遞數(shù)據(jù)的簡單方法。它還將數(shù)據(jù)的 XML 轉(zhuǎn)換過程推到 COM 互操作邊界的“現(xiàn)有代碼”端,根據(jù)接口的不同,這可能會比在 COM
互操作邊界將數(shù)據(jù)轉(zhuǎn)換為 XML 更有效。
讀數(shù)據(jù)
以下示例中,現(xiàn)有代碼返回一個包含 XML 數(shù)據(jù)的字符串,然后,該字符串由
Web 服務(wù)傳遞給客戶:
EC = New ExCode.ExClass()
' 將 XML
字符串直接從現(xiàn)有代碼傳遞給客戶
Example8 =
EC.Example8()
寫數(shù)據(jù)
以下示例中,層次行數(shù)據(jù)的 XML
表示作為字符串傳遞到現(xiàn)有代碼:
EC = New ExCode.ExClass()
' 將 XML
字符串直接從客戶傳遞到現(xiàn)有代碼
EC.Example9(orderXML)
總結(jié)
本文及附帶的示例介紹了有關(guān)數(shù)據(jù)轉(zhuǎn)換的信息。通過數(shù)據(jù)轉(zhuǎn)換,可以使用
ASP.NET 將現(xiàn)有代碼作為 Web 服務(wù)提供。本文討論了一些常用的接口對象,其中包括 XML
字符串,如果使用相應(yīng)的接口對現(xiàn)有代碼進(jìn)行擴(kuò)展,它可以涵蓋大多數(shù)數(shù)據(jù)。
這些解決方案的性能各異,并且受所傳遞的數(shù)據(jù)大小影響。在本系列后面的文章中,我們將對這些實現(xiàn)方法進(jìn)行比較。
評估現(xiàn)有代碼是否適合作為 Web 服務(wù)時,接口只不過是應(yīng)當(dāng)考慮的諸多因素之一。應(yīng)考慮的其它因素包括安全性(包括授權(quán)、身份驗證和加密)、事務(wù)模型、狀態(tài)模型、返回錯誤和結(jié)果的方式,以及代碼是同步還是異步執(zhí)行,等等。
- 1知識時代的企業(yè)——創(chuàng)建21世紀(jì)的組織
- 2IT企業(yè)如何進(jìn)行上海OA信息化?
- 3上海OA市場2014年市場前景
- 4建筑施工行業(yè)OA辦公軟件、項目管理軟件將是泛普軟件的“菜”
- 5會議跟蹤、公告欄應(yīng)用辦公自動化軟件OA系統(tǒng)
- 6開展上海OA信息化前必知三大要素
- 7Sun推出網(wǎng)絡(luò)服務(wù)軟件與微軟一爭高低
- 8年終盤點:協(xié)同上海OA的2013與2014
- 9檔案上海OA信息化的主要觀點與創(chuàng)新、不足
- 10上海市奉賢中等專業(yè)學(xué)校辦公OA系統(tǒng)
- 11隱性知識轉(zhuǎn)化是知識創(chuàng)新的基礎(chǔ)
- 12上海OA信息化不神秘
- 13DAOCHINA的上海OA信息化調(diào)查報告
- 14保護(hù)XML Web服務(wù)免受黑客攻擊 [第一部分] [第二部分]
- 15不同業(yè)務(wù)模式下的上海OA信息化策略
- 16上海三問投資控股集團(tuán)有限公司在線辦公OA系統(tǒng)
- 17泛普OA加速企業(yè)移動信息化普及
- 18上海OA信息化發(fā)展歷程、代表人物和觀點
- 19知識的分類與知識創(chuàng)新的過程
- 20上海OA信息化 從理解開始
- 21集團(tuán)型企業(yè)為什么導(dǎo)入上海OA信息化
- 22上海OA信息化:七分組織 兩分流程 一分技術(shù)
- 23上海OA信息化概要發(fā)展歷程
- 24上海OA信息化與創(chuàng)新
- 25隱性知識的轉(zhuǎn)化和傳播
- 26APQC上海OA信息化評估方法詳細(xì)看
- 27上海OA信息化實施中的PDCA循環(huán)
- 28有生命力的上海OA信息化
- 29Sun 擁有Java, 但是它的Web Service 在哪里?
- 30上海麗漢貿(mào)易有限公司OA辦公系統(tǒng)平臺
成都公司:成都市成華區(qū)建設(shè)南路160號1層9號
重慶公司:重慶市江北區(qū)紅旗河溝華創(chuàng)商務(wù)大廈18樓
泛普上海OA信息化其他應(yīng)用
上海OA軟件 上海OA新聞動態(tài) 上海OA信息化 上海OA快博 上海OA軟件行業(yè)資訊 上海軟件開發(fā)公司 上海門禁系統(tǒng) 上海物業(yè)管理軟件 上海倉庫管理軟件 上海餐飲管理軟件 上海網(wǎng)站建設(shè)公司
版權(quán)所有:泛普軟件 渝ICP備14008431號-2 渝公網(wǎng)安備50011202501700號 咨詢電話:400-8352-114