乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      Microsoft SOAP Toolkit 2.0介紹

       希望蠟炬 2013-01-22
      雖然關(guān)于SOAP的實(shí)現(xiàn)目前有很多種,但是我認(rèn)為對(duì)于VC/VB程序員來(lái)說(shuō),選擇Microsoft的實(shí)現(xiàn)是最好的。先撇開.NET的WebServices的底層庫(kù)不談(因?yàn)檫€不熟悉L),我們現(xiàn)在要討論的是Microsoft Soap Toolkit 2.0。

      Microsoft Soap Toolkit 2.0提供了一整套的COM對(duì)象來(lái)處理與SOAP相關(guān)的所有數(shù)據(jù),可以讓你在不了解SOAP和XML的情況下(當(dāng)然最好還是了解的啦),也可以很容易和方便的使用任何一種編程語(yǔ)言來(lái)編寫SOAP應(yīng)用。你看到的,就是一個(gè)個(gè)的COM對(duì)象(符合微軟的風(fēng)格,符合一般程序員的編程習(xí)慣)。

      一. 功能簡(jiǎn)介:

      1. 提供了客戶端的組件,可以讓你指定WSDL,然后輕松調(diào)用對(duì)應(yīng)的Web Service。

      2. 提供了服務(wù)端的組件,可以讓你指定WSDL、WSML和COM對(duì)象,自動(dòng)為你生成Web Service。

      3. 還提供了底層的處理組件,可以讓你操縱SOAP消息的具體創(chuàng)建、處理和傳輸?shù)倪^(guò)程。


      二. 幾個(gè)概念:

      WSDL(Web Services Description Language):用于描述服務(wù)端所提供服務(wù)的XML格式。WSDL文件里,描述了服務(wù)端提供的服務(wù),提供的調(diào)用方法,以及調(diào)用時(shí)所要遵循的格式,比如調(diào)用參數(shù)和返回值的格式等等。WSDL 很像COM編程里的IDL(Interface Description Language),是服務(wù)器與客戶端之間的契約,雙方必須按契約嚴(yán)格行事才能實(shí)現(xiàn)功能。
      WSML(Web Services Meta Language): 用于描述WSDL里提供的方法與實(shí)現(xiàn)該方法的COM對(duì)象之間的映射關(guān)系。該文件是Microsoft的實(shí)現(xiàn)中特有的,不是SOAP標(biāo)準(zhǔn)的一部分。一般情況下,該文件只在服務(wù)端存在。
      SOAP消息:客戶端和服務(wù)端之間的方法調(diào)用請(qǐng)求和結(jié)果返回值都放在這些消息里,是XML格式的數(shù)據(jù)。

      三. Web Service調(diào)用過(guò)程:

      客戶端:取得服務(wù)端的服務(wù)描述文件WSDL,解析該文件的內(nèi)容,了解服務(wù)端的服務(wù)信息,以及調(diào)用方式。根據(jù)需要,生成恰當(dāng)?shù)腟OAP請(qǐng)求消息(指定調(diào)用的方法,已經(jīng)調(diào)用的參數(shù)),發(fā)往服務(wù)端。等待服務(wù)端返回的SOAP回應(yīng)消息,解析得到返回值。
      服務(wù)端:生成服務(wù)描述文件,以供客戶端獲取。接收客戶端發(fā)來(lái)的SOAP請(qǐng)求消息,解析其中的方法調(diào)用和參數(shù)格式。根據(jù)WSDL和WSML的描述,調(diào)用相應(yīng)的COM對(duì)象來(lái)完成指定功能,并把返回值放入SOAP回應(yīng)消息返回給用戶。
      四. 編程的兩種模式
      高層接口
      使用高層接口,你不需要知道SOAP和XML的任何信息,就可以生成和使用一個(gè)WebService。Soap Toolkit 2.0通過(guò)提供兩個(gè)COM對(duì)象――SoapClient和SoapServer,來(lái)完成這些功能。
      在客戶端,你只需要生成一個(gè)SoapClient實(shí)例,并用WSDL作為參數(shù)來(lái)調(diào)用其中的mssoapinit方法。SoapClient對(duì)象會(huì)自動(dòng)解析WSDL文件,并在內(nèi)部生成所有Web Service的方法和參數(shù)信息。之后,你就可以像調(diào)用IDispatch接口里的方法一樣,調(diào)用里面所有的方法。在VB或是腳本語(yǔ)言里,你甚至可以直接在SoapClient對(duì)象名后面直接加上.方法(參數(shù)…)進(jìn)行調(diào)用。
      在服務(wù)端,有兩種處理模式。一種是生成ASP文件;另一種是直接使用ISAPI擴(kuò)展,讓Soap Toolkit提供的DLL來(lái)處理對(duì)WSDL的請(qǐng)求。
      在第一種模式中,你需要在ASP文件里創(chuàng)建SoapServer對(duì)象,并用WSDL和WSML作為參數(shù)來(lái)調(diào)用Init方法,SoapServer在內(nèi)部會(huì)自動(dòng)建立相關(guān)的映射關(guān)系。然后,用ASP的Request和Response對(duì)象作為參數(shù)調(diào)用SoapInvoke方法。SoapServer會(huì)自動(dòng)從Request里取得用戶的SOAP請(qǐng)求消息,并解析,調(diào)用相應(yīng)的COM完成功能,把返回值封裝成SOAP回應(yīng)消息,通過(guò)Response對(duì)象返回。
      在第二種模式中,Soap Toolkit提供的ISAPI擴(kuò)展會(huì)自動(dòng)完成以上ASP模式的全部操作。
      兩種模式的比較是,第一種比較靈活,但是速度比較慢。而第二種雖然靈活性沒有了,但是性能卻很高。所以,如果沒有特殊都請(qǐng)使用ISAPI模式。
      低層接口 
      要使用低層接口,你必須對(duì)SOAP和XML有所了解。你可以對(duì)SOAP的處理過(guò)程進(jìn)行控制,特別是要做特殊處理的時(shí)候。
      在客戶端,首先要?jiǎng)?chuàng)建一個(gè)HttpConnector對(duì)象,負(fù)責(zé)HTTP連接。設(shè)定Connector的一些頭部信息,比如EndPoinURL和SoapAction等。如果網(wǎng)絡(luò)連接需要使用代理服務(wù)器,那也要在這里設(shè)定相關(guān)的信息。接著創(chuàng)建SoapSerializer對(duì)象,用于生成Soap消息。按照WSDL里定義,把所有參數(shù)按順序序列化,得到一個(gè)完整的SOAP請(qǐng)求消息。該Soap消息,作為Payload通過(guò)HttpConnector被發(fā)送到服務(wù)端。最后,生成一個(gè)SoapReader對(duì)象,負(fù)責(zé)讀取服務(wù)端返回的SOAP消息,取得其中的返回值。
      在服務(wù)端,首先通過(guò)ASP里的Request和Response對(duì)象取得HTTP連接的輸入與輸出。接著創(chuàng)建SoapReader對(duì)象,讀取Request對(duì)象里的Soap請(qǐng)求消息,解析出要調(diào)用的方法和調(diào)用的參數(shù), 執(zhí)行實(shí)際的調(diào)用,并取得執(zhí)行結(jié)果。最后,生成一個(gè)SoapSerializer對(duì)象,按照WSDL的描述,序列化執(zhí)行結(jié)果,生成Soap回應(yīng)消息,通過(guò)Response對(duì)象返回給客戶端。

      五. 疑問(wèn)與解答

      為什么要有WSML?
      答:因?yàn)镾OAP本身只是對(duì)象訪問(wèn)的協(xié)議,至于實(shí)現(xiàn)的方式并沒有指定。一般來(lái)說(shuō),使用SOAP就是把現(xiàn)有系統(tǒng)的功能以標(biāo)準(zhǔn)的方式對(duì)外公開,讓外部能夠訪問(wèn)。而在微軟的平臺(tái)上,為了模塊的互用性,功能的實(shí)現(xiàn)一般是以COM的方式提供的。而如何能夠把WSDL里描述的方法,映射到COM的接口方法上,這就是WSML所要做的?,F(xiàn)在你可以看到,使用WSML,你不需要做太多工作,就可以把現(xiàn)有的應(yīng)用很快的變成Web Service應(yīng)用。在服務(wù)端,你完全保留了Microsoft的COM/COM+應(yīng)用模式。(當(dāng)然,WSML也不是必須的,如果你不需要使用COM的方法映射。如果你不使用Soap Toolkit的高層接口,而使用底層接口。那就沒有必要了。)

      如何處理復(fù)雜的數(shù)據(jù)類型?
      答:你可以自己實(shí)現(xiàn)一個(gè)自定義的類型映射COM對(duì)象(Custom Type Mapper),并在WSML里進(jìn)行指定。這樣,Soap Toolkit在處理過(guò)程當(dāng)中,會(huì)調(diào)用這個(gè)Mapper對(duì)SOAP消息里的消息進(jìn)行處理。比如要返回一個(gè)復(fù)雜數(shù)據(jù),在服務(wù)端,Toolkit要懂得如何把一個(gè)復(fù)雜數(shù)據(jù)類型序列化為XML節(jié)點(diǎn)。而在客戶端,Toolkit要懂得如何把XML節(jié)點(diǎn)重新表示為一個(gè)復(fù)雜的數(shù)據(jù)結(jié)構(gòu)。
      需要說(shuō)明的是,這個(gè)映射對(duì)象(Mapper)并不是必須的,只是為了使用的方便而使用。也就是說(shuō),雙方只要嚴(yán)格遵循WSDL里描述的規(guī)范,就一定能夠達(dá)到調(diào)用成功。而不管你客戶和服務(wù)端是如何映射這個(gè)復(fù)雜數(shù)據(jù)類型的,是一個(gè)C結(jié)構(gòu)體也好,是一個(gè)COM對(duì)象也好,或是一個(gè)Java的類也好,都是無(wú)關(guān)緊要的。

      六. 關(guān)于Soap Toolkit的例子

      Toolkit自帶的例子已經(jīng)非常全面,解釋了使用這個(gè)Toolkit需要了解的各種調(diào)用方式。通過(guò)看微軟提供的代碼,并親自運(yùn)行一遍,就會(huì)對(duì)該Soap Toolkit有比較感性的認(rèn)識(shí)了。
      不過(guò),需要提醒你的是,要能正確運(yùn)行附帶的例子,你必須安裝有IIS服務(wù),并且還要根據(jù)要求創(chuàng)建虛擬目錄和映射主機(jī)名。具體請(qǐng)參見Sample頁(yè)的安裝說(shuō)明(Setup Instructions)。

      七. Soap Toolkit的兩個(gè)工具

      WSDL Generator: 該工具是Toolkit自帶的,主要的功能就是可以把一個(gè)COM對(duì)象作為一個(gè)Web Service發(fā)布,用于服務(wù)端的開發(fā)。
      你只要指定了COM對(duì)象以及要輸出的接口函數(shù),和發(fā)布的網(wǎng)址等信息,該工具就會(huì)自動(dòng)生成對(duì)應(yīng)的WSDL和WSML文件。你只要把WSDL和WSML拷貝到對(duì)應(yīng)的虛擬目錄下,一個(gè)Web Service就完成了----該工具避免了手動(dòng)書寫WSDL和WSML的麻煩,但是由于該版本還無(wú)法實(shí)現(xiàn)復(fù)雜數(shù)據(jù)類型的映射。所以如果有復(fù)雜數(shù)據(jù)類型的情況,你還是要手動(dòng)修改的。
      Web Service Proxy Wizard: 該工具是在Toolkit之后才發(fā)布的,所以你需要單獨(dú)下載(地址見附錄)。該工具完成的功能正好與WSDL Generator相反,是為一個(gè)WSDL文件生成相應(yīng)的COM訪問(wèn)對(duì)象,用于客戶端的開發(fā)。
      你只要指定要調(diào)用WebService的WSDL文件,該工具就會(huì)自動(dòng)生成一個(gè)ATL的COM對(duì)象類(Proxy對(duì)象)。而通過(guò)調(diào)用生成的Proxy對(duì)象,就可以實(shí)現(xiàn)對(duì)Web Service的調(diào)用。而在這個(gè)Proxy對(duì)象里,是通過(guò)調(diào)用Soap Toolkit的底層接口來(lái)完成整個(gè)的Soap調(diào)用過(guò)程的。而且,由于生成的是一個(gè)VC的ATL COM Object工程,你可以再進(jìn)行修改,并要進(jìn)行編譯而生成最后的COM對(duì)象。
      使用Web Service Proxy Wizard的好處就是可以在Web Service的調(diào)用進(jìn)行前期綁定,從而提高了調(diào)用效率。而且,其他的模塊只需要調(diào)用這個(gè)Proxy對(duì)象,就可以實(shí)現(xiàn)對(duì)Web Service的調(diào)用,而不用跟Soap Toolkit有任何的直接聯(lián)系。對(duì)其他調(diào)用模塊來(lái)說(shuō),Proxy對(duì)象就是那個(gè)遠(yuǎn)端的Web Service,跟一般的本地調(diào)用沒什么兩樣。

      八. 結(jié)論:

      以上,我們僅僅是對(duì)Microsoft SOAP Toolkit 2.0進(jìn)行了概要介紹。要真正掌握,還需不斷的實(shí)踐。我們將在后續(xù)的文章中對(duì)如何實(shí)作進(jìn)行詳細(xì)介紹。

      附錄:

      Microsoft Soap Toolkit 2.0的下載地址:http://msdn.microsoft.com/downloads/default.ASP?URL=/code/sample.asp?url=/msdn-files/027/001/580/msdncompositedoc.XML
      MSDN上的Soap專題:
      http://msdn.microsoft.com/soap/
      微軟SoapSDK的新聞組:http://msdn.microsoft.com/newsgroups/default.ASP?url=/newsgroups/loadframes.asp?ICP=msdn&sLCID=us&NewsGroup=microsoft.public.XML.soapsdk&frame=true
      Web Service Proxy Wizard的下載地址:
      http://msdn.microsoft.com/library/default.ASP?url=/library/en-us/dnvs600/HTML/webservproxwiz.asp?frame=true
      VB Web Services Proxy Generator(在新聞組上發(fā)現(xiàn)的,沒有經(jīng)過(guò)測(cè)試)
      http://www.VBXML.com/downloads/default.ASP?id=v2001510204034

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多