新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > .NET的數據傳輸之道

        .NET的數據傳輸之道

        作者: 時間:2012-05-02 來源:網絡 收藏

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

        本文引用地址:http://www.104case.com/article/149158.htm

        需要具備

        Microsoft®eMbeddedVisualTools

        PocketPC上的有效Internet連接

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

        須知

        SOAP規范(當前版本為1.1)仍然是一個處于提議狀態的標準并且有可能發生變化。本文所提供的示例代碼使用了當前處于提議狀態的SOAP規范,在SOAP規范發生修改和變化時,本文中所提供的示例代碼可能需要修改。

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

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

        支持的語言

        英語

        數據和WebServices

        正如我在由我撰寫的另一篇循序漸進文章“為Microsoft做好準備”中所介紹的一樣,您可以在當前SOAP規范的基礎之上,使用WebServices為PocketPC開發程序。

        大多數的商業應用程序都需要在服務器和客戶機應用程序之間傳輸數據。在一個傳統的MicrosoftWeb解決方案平臺(以前被稱作MicrosoftWindowsDNA)中,一般使用ADORecordset(ADO記錄集)對象進行。因為它使用了一種特殊類型的“編組”(對象傳輸),它無需持有服務器上的任何“狀態”(資源)即可被傳輸到客戶端上。有鑒于此,很多現有系統中的組件都采用了這種實現方式,以ADORecordsets形式返回數據。

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

        但是,該解決方案不能被照搬到PocketPC上,因為ADOCE(ActiveXDataObjectsforCE)的實現方式同ADO有所不同。最重要的差別之處在于:ADOCE當前(3.1版)不支持持續性。特別是對于XML(擴展標記語言)格式。另一個不同之處在于:ADOCE不支持我前面所提到過的記錄集編組。因此,它不能為動態創建“連接斷開”(沒有到數據源的活動連接)狀態下的記錄集提供支持。

        無處不在的WebServices數據

        在當前版本的ADOCE(V3.1)中,我們必須找到另一種處理WebService(SOAP)調用返回數據的方法。在本文中,我將同大家對一些示例代碼進行探討,看看如何使用從一個SOAP響應中返回的數據。該示例假定Recordset(記錄集)按照ChrisDengler文中所介紹的Solution2封裝方式進行封裝。因為Chris在他的文章中已經對這種解決方案的實現方式進行了詳細描述,在本文中我就不再對所需的服務器端代碼多加敘述了。

        一個測試客戶端程序

        在我們開始討論代碼之前,讓我們首先了解一下使用WebServices傳輸數據對我們有哪些好處。在下面這個窗體中,我創建了一個簡單的測試用客戶端程序,該程序將兩個不同的WebServices結合到了一個MicrosofteMbeddedVisualBasic應用程序之中。:

        SOAP客戶端測試程序示例

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

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

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

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

        代碼討論

        以下代碼為cmdGetRecordset_Click事件的代碼(當您按下窗體底部的“Get”按鈕時運行):

        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 下一頁

        關鍵詞: 數據傳輸 .NET

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 石城县| 富顺县| 阳新县| 宁河县| 隆德县| 阆中市| 彰武县| 拉萨市| 临清市| 尉犁县| 临江市| 潍坊市| 沐川县| 芷江| 大竹县| 漾濞| 和田市| 观塘区| 普格县| 阳谷县| 南昌市| 扎兰屯市| 隆化县| 太白县| 安岳县| 金湖县| 三河市| 公安县| 游戏| 仁怀市| 房山区| 嘉鱼县| 汉阴县| 江源县| 获嘉县| 吐鲁番市| 无锡市| 长葛市| 连平县| 什邡市| 白玉县|