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