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

首頁(yè) > 開(kāi)發(fā) > 綜合 > 正文

典型的Web Service結(jié)構(gòu)

2024-07-21 02:21:43
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
  • 網(wǎng)站運(yùn)營(yíng)seo文章大全
  • 提供全面的站長(zhǎng)運(yùn)營(yíng)經(jīng)驗(yàn)及seo技術(shù)!
  • 典型的web service結(jié)構(gòu)
    (可樂(lè) 2001年11月01日 18:35)

    典型的web service結(jié)構(gòu)。

    不管你的web service是用什么工具,什么語(yǔ)言寫(xiě)出來(lái)的,只要你用soap協(xié)議通過(guò)http來(lái)調(diào)用它,總體結(jié)構(gòu)都應(yīng)如下圖所示。通常,你用你自己喜歡的語(yǔ)言(如vb 6或者vb.net)來(lái)構(gòu)建你的web service,然后用soap toolkit或者.net的內(nèi)建支持來(lái)把它暴露給web客戶(hù)。于是,任何語(yǔ)言,任何平臺(tái)上的客戶(hù)都可以閱讀其wsdl文檔,以調(diào)用這個(gè)web service。客戶(hù)根據(jù)wsdl描述文檔,會(huì)生成一個(gè)soap請(qǐng)求消息。web service都是放在web服務(wù)器 (如iis) 后面的,客戶(hù)生成的soap請(qǐng)求會(huì)被嵌入在一個(gè)http post請(qǐng)求中,發(fā)送到web服務(wù)器來(lái)。web服務(wù)器再把這些請(qǐng)求轉(zhuǎn)發(fā)給web service請(qǐng)求處理器。對(duì)vb 6程序來(lái)說(shuō),web service請(qǐng)求處理器是一個(gè)與soap toolkit組件協(xié)同工作的asp頁(yè)面或isapi extension。而對(duì)vb.net程序來(lái)說(shuō),web service請(qǐng)求處理器則是一個(gè).net framework自帶的isapi extension。請(qǐng)求處理器的作用在于,解析收到的soap請(qǐng)求,調(diào)用web service,然后再生成相應(yīng)的soap應(yīng)答。web服務(wù)器得到soap應(yīng)答后,會(huì)再通過(guò)http應(yīng)答的方式把它送回到客戶(hù)端。

    典型的web service結(jié)構(gòu),點(diǎn)擊小圖放大

    遠(yuǎn)程過(guò)程調(diào)用(rpc)與消息傳遞
    web service本身實(shí)際是在實(shí)現(xiàn)應(yīng)用程序間的通信。我們現(xiàn)在有兩種應(yīng)用程序通信的方法:rpc(遠(yuǎn)程過(guò)程調(diào)用)和消息傳遞。使用rpc的時(shí)候,客戶(hù)端的概念是調(diào)用服務(wù)器上的遠(yuǎn)程過(guò)程,通常方式為實(shí)例化一個(gè)遠(yuǎn)程對(duì)象并調(diào)用其方法和屬性。rpc強(qiáng)調(diào)的是遠(yuǎn)程對(duì)象和它的界面,即屬性、方法和調(diào)用時(shí)的參數(shù)。dcom和.net遠(yuǎn)程訪(fǎng)問(wèn)都是rpc的例子。
    消息傳遞一般是在耦合度更低的系統(tǒng)中。消息傳遞的概念是,客戶(hù)端向服務(wù)器發(fā)送消息,然后等待服務(wù)器的回應(yīng)。消息傳遞系統(tǒng)強(qiáng)調(diào)的是消息的發(fā)送和回應(yīng),而不是遠(yuǎn)程對(duì)象的界面。由于是基于消息的系統(tǒng),客戶(hù)端和服務(wù)器之間的耦合度比rpc方法更低。
    rpc系統(tǒng)試圖達(dá)到一種位置上的透明性:服務(wù)器暴露出遠(yuǎn)程對(duì)象的接口,而客戶(hù)端就好像在使用本地使用的這些對(duì)象的接口一樣,這樣就隱藏了底層的信息,客戶(hù)端也就根本不需要知道對(duì)象是在哪臺(tái)機(jī)器上。例如,你在vb 6中通過(guò)dcom調(diào)用一個(gè)遠(yuǎn)程對(duì)象,你的代碼看起來(lái)就與調(diào)用本地對(duì)象一樣。而消息傳遞則不同,它強(qiáng)調(diào)傳遞的東西是什么,但不管消息傳遞過(guò)去后干什么。客戶(hù)不需要知道服務(wù)器是怎么實(shí)現(xiàn)的,以及消息是怎么被處理的。
    我們已經(jīng)說(shuō)過(guò),你可以建立一個(gè)消息服務(wù)器,根據(jù)收到的消息來(lái)調(diào)用對(duì)象。這是通過(guò)消息傳遞方式有效的實(shí)現(xiàn)了rpc。如果客戶(hù)仍然以消息的思維方式來(lái)進(jìn)行操作,那么你可以把它叫做消息傳遞。但如果客戶(hù)以遠(yuǎn)程對(duì)象的思維方式來(lái)進(jìn)行操作,那么你就應(yīng)該把它叫做rpc。
    如果你想實(shí)現(xiàn)一個(gè)基于xml的消息傳遞系統(tǒng),大量的工作將集中在處理xml請(qǐng)求和應(yīng)答消息上。雖然vb 6和vb.net中,幫助你建立web service的工具已經(jīng)做了許多對(duì)xml消息進(jìn)行處理的工作,但畢竟所有的數(shù)據(jù)都是用xml的形式收發(fā)的,許多情況下你還是需要對(duì)消息進(jìn)行一些自己的處理。深入理解xml和xml schema對(duì)于有效地實(shí)現(xiàn)xml消息系統(tǒng)是至關(guān)重要的。


    建立web service
    我知道你現(xiàn)在已經(jīng)很心急的想要寫(xiě)點(diǎn)代碼,看看web service到底是什么樣的了。那么我們現(xiàn)在就介紹怎樣用vb 6和vb.net實(shí)際做出一個(gè)web service來(lái)。本節(jié)的目的只是向你展示一下這些工具的功能,而不是深入地講解web service的工作原理。本書(shū)后面的章節(jié)會(huì)向你慢慢說(shuō)明web service以及microsoft soap toolkit和.net等工具的內(nèi)部原理的。

    使用soap toolkit
    microsoft的soap toolkit v2幫助你把com組件變成web service。這套工具分為三大主要部分:soapclient是一個(gè)用于調(diào)用web service的com組件;soapserver 是一個(gè)處理soap請(qǐng)求和返回soap應(yīng)答的組件;還有一個(gè)wsdl向?qū)В梢园涯愕膖ype library轉(zhuǎn)換成wsdl文檔,以暴露給web service的客戶(hù)。
    假設(shè)你有一個(gè)com組件,暴露出一個(gè)gettemperature方法:
    public function gettemperature(byval zipcode as string, _
    byval celsius as boolean) as single

    要把這個(gè)組件變成一個(gè)web service,你可以使用wsdl向?qū)А=o出你要轉(zhuǎn)換的組件后,向?qū)?huì)要你選擇你想暴露出的方法,指出生成的web service所在的url(如http://localhost/temperature/),以及你希望用asp還是isapi做你的請(qǐng)求處理器(如圖1-2)。然后向?qū)н€會(huì)問(wèn)你生成的wsdl和asp文件應(yīng)該放在那個(gè)目錄下。

    使用soap toolkit向?qū)?lái)轉(zhuǎn)換com組件,點(diǎn)擊小圖放大

    現(xiàn)在該調(diào)用這個(gè)web service了。方法是在vb或其他任何可以使用com的語(yǔ)言里調(diào)用soapclient組件。下面這段代碼演示了怎樣調(diào)用webservice中的gettemperature方法:
    dim soap as mssoaplib.soapclient
    set soap = new mssoaplib.soapclient
    soap.mssoapinit _
    "http://localhost/temperature/temperature.wsdl"
    msgbox ("氣溫是: " & _
    soap.gettemperature("20171", false))
    首先調(diào)用mssoapinit,把wsdl文檔的url傳給soapclient。wsdl文檔的url就是你在wsdl向?qū)е薪o出的url加上〈service名字.wsdl〉。一旦初始化完成,soapclient就得到了web service的所有方法,你就可以直接調(diào)用這些方法了。
    發(fā)表評(píng)論 共有條評(píng)論
    用戶(hù)名: 密碼:
    驗(yàn)證碼: 匿名發(fā)表
    主站蜘蛛池模板: 襄垣县| 五常市| 翁源县| 荆州市| 方正县| 江陵县| 荥阳市| 山东省| 阳泉市| 涞源县| 阜城县| 黎平县| 迭部县| 龙山县| 乌兰县| 乌兰浩特市| 孝感市| 台北市| 宁陵县| 武夷山市| 清丰县| 溧水县| 镇原县| 巧家县| 随州市| 通道| 辽阳县| 阳江市| 金寨县| 昭通市| 浮山县| 闽侯县| 剑河县| 保山市| 盘锦市| 北宁市| 雷州市| 湟中县| 宜宾县| 西藏| 临澧县|