国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > .NET > 正文

使用 .NET 框架將現(xiàn)有代碼作為 Web 服務(wù)提供

2024-07-10 13:01:42
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
使用 .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 版。

目錄
簡(jiǎn)介
現(xiàn)有代碼提供的數(shù)據(jù)類(lèi)型
ado 2x command 對(duì)象
ado 2x recordset 對(duì)象
stream 對(duì)象
xmldom 對(duì)象
xml 字符串
總結(jié)

簡(jiǎn)介
.net 框架簡(jiǎn)化了將 .net 代碼作為 web 服務(wù)提供的任務(wù)。.net 框架開(kāi)發(fā)人員指南中的 asp.net web 服務(wù)和 asp.net web 服務(wù)客戶機(jī)(英文)對(duì)此進(jìn)行了說(shuō)明。之所以能夠?qū)崿F(xiàn)這種簡(jiǎn)化,其中一個(gè)原因是 .net 框架提供了一系列規(guī)則,用于將復(fù)雜的 .net 數(shù)據(jù)類(lèi)型轉(zhuǎn)換為 xml(序列化)以及反向轉(zhuǎn)換(反序列化)。

編寫(xiě)為 .net 之前的類(lèi)的現(xiàn)有代碼通過(guò)特定于語(yǔ)言的數(shù)據(jù)類(lèi)型或 com 對(duì)象來(lái)傳遞數(shù)據(jù),因此不能依賴于相同的標(biāo)準(zhǔn)規(guī)則將這些數(shù)據(jù)類(lèi)型序列化為 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)換問(wèn)題并不是唯一需要考慮的問(wèn)題。應(yīng)考慮的其它因素包括對(duì)象和狀態(tài)模型、返回的數(shù)據(jù)大小、如何表示已經(jīng)成功、如何返回錯(cuò)誤信息、安全模型(包括訪問(wèn)控制、身份驗(yàn)證和加密)、執(zhí)行模型(同步或異步)、如何分發(fā)代碼,以及事務(wù)模型(com+ 事務(wù)或聲明型事務(wù)),等等。這些問(wèn)題將在即將發(fā)表的體系結(jié)構(gòu)主題(英文)文章中進(jìn)行討論。

現(xiàn)有代碼提供的數(shù)據(jù)類(lèi)型
討論現(xiàn)有代碼傳遞的所有數(shù)據(jù)類(lèi)型的轉(zhuǎn)換將是一個(gè)相當(dāng)大的工程,因此本文只介紹一些最常用的數(shù)據(jù)類(lèi)型,以及 xml(作為字符串),因?yàn)槿绻褂?xml 對(duì)現(xiàn)有代碼進(jìn)行擴(kuò)展,那么 xml 就可以涵蓋幾乎所有其它的數(shù)據(jù)類(lèi)型。本文討論以下數(shù)據(jù)類(lèi)型的轉(zhuǎn)換方法:

ado 2x command 對(duì)象
ado2x recordset 對(duì)象
stream 對(duì)象
xmldom 對(duì)象
xml
ado 2x command 對(duì)象
直接訪問(wèn)數(shù)據(jù)庫(kù)的現(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í)體,通過(guò) command 對(duì)象的輸出參數(shù)返回?cái)?shù)據(jù)比通過(guò) 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),寫(xiě)入名稱和值
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()
寫(xiě)數(shù)據(jù)
將數(shù)據(jù)作為 command 對(duì)象的參數(shù)傳遞是一種非常有效的數(shù)據(jù)傳遞方法。它還可以進(jìn)行擴(kuò)展,并提供了一些類(lèi)型檢查功能。不幸的是,由于 beta 1 中存在缺陷,command 對(duì)象產(chǎn)生的數(shù)據(jù)無(wú)法傳遞到現(xiàn)有代碼。beta 2 中解決了這個(gè)問(wèn)題。beta 1 的解決方法是對(duì)現(xiàn)有的 vb 6 代碼進(jìn)行擴(kuò)展,接受 xml。

ado2x recordset 對(duì)象
ado 2x 斷開(kāi)連接的記錄集通常用于在多層應(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 表示寫(xiě)入流
rs.save(stream, adodb.persistformatenum.adpersistxml)
' 將 xml 作為字符串從流返回
example3 = stream.readtext
寫(xiě)數(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()
' 打開(kāi)流對(duì)象
stream.open()
' 將 xml 寫(xiě)入流
stream.writetext(rsxml)
' 將指針定位到流的開(kāi)頭
stream.position = 0
' 使用流中的 xml 數(shù)據(jù)打開(kāi)記錄集
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ò)展性、類(lèi)型檢查和架構(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
寫(xiě)數(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ù)的簡(jiǎn)單方法。它還將數(shù)據(jù)的 xml 轉(zhuǎn)換過(guò)程推到 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()
寫(xiě)數(shù)據(jù)
以下示例中,層次行數(shù)據(jù)的 xml 表示作為字符串傳遞到現(xiàn)有代碼:

ec = new excode.exclass()
' 將 xml 字符串直接從客戶傳遞到現(xiàn)有代碼
ec.example9(orderxml)

總結(jié)
本文及附帶的示例介紹了有關(guān)數(shù)據(jù)轉(zhuǎn)換的信息。通過(guò)數(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í),接口只不過(guò)是應(yīng)當(dāng)考慮的諸多因素之一。應(yīng)考慮的其它因素包括安全性(包括授權(quán)、身份驗(yàn)證和加密)、事務(wù)模型、狀態(tài)模型、返回錯(cuò)誤和結(jié)果的方式,以及代碼是同步還是異步執(zhí)行,等等。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 三原县| 汕头市| 喀喇沁旗| 湘潭市| 郸城县| 博白县| 赣榆县| 乾安县| 嘉义市| 荣昌县| 静安区| 自贡市| 江油市| 吉木萨尔县| 泸州市| 新竹市| 五家渠市| 合阳县| 遂平县| 宜阳县| 安化县| 鹤壁市| 长春市| 广汉市| 汉源县| 南陵县| 新闻| 潼关县| 贺州市| 北票市| 石阡县| 繁峙县| 玉林市| 乌鲁木齐市| 友谊县| 诸城市| 克什克腾旗| 巴中市| 廉江市| 定陶县| 三台县|