<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > .NET的數(shù)據(jù)傳輸之道

          .NET的數(shù)據(jù)傳輸之道

          作者: 時(shí)間:2012-05-02 來源:網(wǎng)絡(luò) 收藏

          本文向您介紹了如何使用WebServices和SOAP(SimpleObjectAccessProtocol,簡單對(duì)象反問協(xié)議)進(jìn)行,并且通過討論示例代碼對(duì)在PocketPC上傳輸數(shù)據(jù)的方法進(jìn)行了仔細(xì)分析。

          本文引用地址:http://www.ex-cimer.com/article/149158.htm

          需要具備

          Microsoft®eMbeddedVisualTools

          PocketPC上的有效Internet連接

          如果需要,您可以下載本文中所討論的示例代碼。為了創(chuàng)建測試示例代碼所需的WebServices,您需要下載SOAPToolkit(SOAPToolkitforMicrosoftVisualStudio6.0)

          須知

          SOAP規(guī)范(當(dāng)前版本為1.1)仍然是一個(gè)處于提議狀態(tài)的標(biāo)準(zhǔn)并且有可能發(fā)生變化。本文所提供的示例代碼使用了當(dāng)前處于提議狀態(tài)的SOAP規(guī)范,在SOAP規(guī)范發(fā)生修改和變化時(shí),本文中所提供的示例代碼可能需要修改。

          該示例代碼使用了SDL(ServicesDescriptionLanguage,服務(wù)描述語言)來定義WebServices,而SDL即將(有望在2001年的上半年)被最新的WSDL規(guī)范(WebServicesDescriptionLanguage,Web服務(wù)描述語言)所替代。本文中所提供的示例代碼不能同使用WSDL規(guī)范的WebServices配合工作。

          支持ADO(MicrosoftActiveXDataObjects)Recordset(我使用的是2.6版本)的XML格式可能會(huì)發(fā)生修改和變化,在XML格式發(fā)生變化時(shí),本文提供的示例代碼也可能需要相應(yīng)修改。

          支持的語言

          英語

          數(shù)據(jù)和WebServices

          正如我在由我撰寫的另一篇循序漸進(jìn)文章“為Microsoft做好準(zhǔn)備”中所介紹的一樣,您可以在當(dāng)前SOAP規(guī)范的基礎(chǔ)之上,使用WebServices為PocketPC開發(fā)程序。

          大多數(shù)的商業(yè)應(yīng)用程序都需要在服務(wù)器和客戶機(jī)應(yīng)用程序之間傳輸數(shù)據(jù)。在一個(gè)傳統(tǒng)的MicrosoftWeb解決方案平臺(tái)(以前被稱作MicrosoftWindowsDNA)中,一般使用ADORecordset(ADO記錄集)對(duì)象進(jìn)行。因?yàn)樗褂昧艘环N特殊類型的“編組”(對(duì)象傳輸),它無需持有服務(wù)器上的任何“狀態(tài)”(資源)即可被傳輸?shù)娇蛻舳松?。有鑒于此,很多現(xiàn)有系統(tǒng)中的組件都采用了這種實(shí)現(xiàn)方式,以ADORecordsets形式返回?cái)?shù)據(jù)。

          如果我們又想利用在這些組件上的先前投資,又想獲得應(yīng)用程序同WebServices集成所帶來的諸多益處,我們就需要找到一種通過SOAP傳輸這些ADORecordsets的方法。在ChrisDengler所撰寫的“利用SOAP消息返回ADORecordset”這篇出色文章中,您可以為在個(gè)人計(jì)算機(jī)上使用WebServices找到一種解決方法。

          但是,該解決方案不能被照搬到PocketPC上,因?yàn)锳DOCE(ActiveXDataObjectsforCE)的實(shí)現(xiàn)方式同ADO有所不同。最重要的差別之處在于:ADOCE當(dāng)前(3.1版)不支持持續(xù)性。特別是對(duì)于XML(擴(kuò)展標(biāo)記語言)格式。另一個(gè)不同之處在于:ADOCE不支持我前面所提到過的記錄集編組。因此,它不能為動(dòng)態(tài)創(chuàng)建“連接斷開”(沒有到數(shù)據(jù)源的活動(dòng)連接)狀態(tài)下的記錄集提供支持。

          無處不在的WebServices數(shù)據(jù)

          在當(dāng)前版本的ADOCE(V3.1)中,我們必須找到另一種處理WebService(SOAP)調(diào)用返回?cái)?shù)據(jù)的方法。在本文中,我將同大家對(duì)一些示例代碼進(jìn)行探討,看看如何使用從一個(gè)SOAP響應(yīng)中返回的數(shù)據(jù)。該示例假定Recordset(記錄集)按照ChrisDengler文中所介紹的Solution2封裝方式進(jìn)行封裝。因?yàn)镃hris在他的文章中已經(jīng)對(duì)這種解決方案的實(shí)現(xiàn)方式進(jìn)行了詳細(xì)描述,在本文中我就不再對(duì)所需的服務(wù)器端代碼多加敘述了。

          一個(gè)測試客戶端程序

          在我們開始討論代碼之前,讓我們首先了解一下使用WebServices傳輸數(shù)據(jù)對(duì)我們有哪些好處。在下面這個(gè)窗體中,我創(chuàng)建了一個(gè)簡單的測試用客戶端程序,該程序?qū)蓚€(gè)不同的WebServices結(jié)合到了一個(gè)MicrosofteMbeddedVisualBasic應(yīng)用程序之中。:

          SOAP客戶端測試程序示例

          窗體頂部的TextBox(文本框)用來選擇所需的WebService(描述)。這個(gè)URI(UniversalResourceIdentifier)是使用SOAPToolkitWizard創(chuàng)建的SDL(服務(wù)描述語言,ServicesDescriptionLanguage)文件。

          我已經(jīng)創(chuàng)建了第一個(gè)WebService,您可以調(diào)用這個(gè)WebService(使用頂部的“Get”按鈕),這個(gè)WebService主要用于測試目的。它調(diào)用一個(gè)簡單的WebService,將您提交的名和姓作為參數(shù)連接到了一個(gè)包含完整名稱的字符串中。

          當(dāng)您輸入一個(gè)已經(jīng)在服務(wù)器上進(jìn)行了定義的DSN(數(shù)據(jù)源名稱)以及一個(gè)針對(duì)該DSN的SQL(結(jié)構(gòu)化查詢語言)查詢,然后點(diǎn)擊“Get”按鈕時(shí),它開始變得更有意思了。DSN和SQL作為一個(gè)參數(shù)傳遞給了WebService,然后以XML格式返回一個(gè)ADORecordset。數(shù)據(jù)經(jīng)過分析后,填充在窗體底部的ListView控件中。

          在正確對(duì)服務(wù)器進(jìn)行了設(shè)置的前提下,現(xiàn)在,您可以方便地訪問您的企業(yè)數(shù)據(jù)了。您無需任何第三方產(chǎn)品--甚至不使用ADOCE--即可輕松做到這一點(diǎn)。對(duì)此,我的一位同事說,“這實(shí)在令人驚訝!”

          代碼討論

          以下代碼為cmdGetRecordset_Click事件的代碼(當(dāng)您按下窗體底部的“Get”按鈕時(shí)運(yùn)行):

          DimlavParameters(2)AsVariant

          DimlsAsString

          DimlitmAsListItem

          DimiAsInteger

          'Setparameters

          lavParameters(1)=txtDSN.Text

          lavParameters(2)=txtSQL.Text

          'MakeSOAPCall

          ls=SOAPCall(txtURI.Text,GetRecordset,lavParameters,chkShowPackets=1)

          'ClearandaddListViewheadings

          lvwRecordset.ColumnHeaders.Clear

          lvwRecordset.ColumnHeaders.Add1,,ArtNo,700

          lvwRecordset.ColumnHeaders.Add2,,Description,1450

          lvwRecordset.ColumnHeaders.Add3,,Price,850,lvwColumnRight

          'ClearandfillListViewfromXML(withRecordsetEmulation)

          lvwRecordset.ListItems.Clear

          XMLRSOpenls

          DoWhileNotXMLRSEOF

          Setlitm=lvwRecordset.ListItems.Add(,,XMLRS(ArticleNo))


          上一頁 1 2 下一頁

          關(guān)鍵詞: 數(shù)據(jù)傳輸 .NET

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();