一、服務(wù)式Web
從內(nèi)容提供商所采用的簡(jiǎn)單 " /> 国产精品18久久久久久白浆.,乳交高H糙汉宠文,国产免费人成在线看视频

天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

在PHP中利用XML技術(shù)構(gòu)造遠(yuǎn)程服務(wù)(上)

未來(lái)的Web將是以服務(wù)為中心的Web,XML_RPC標(biāo)準(zhǔn)使得編寫和應(yīng)用服務(wù)變得非常簡(jiǎn)單。本文介紹XML_RPC標(biāo)準(zhǔn)及其php實(shí)現(xiàn),并通過(guò)實(shí)例示范了如何在php中開(kāi)發(fā)XML_RPC服務(wù)和客戶程序。

一、服務(wù)式Web
從內(nèi)容提供商所采用的簡(jiǎn)單方法到UDDI(Universal Description,Discovery and Integration)的未來(lái)構(gòu)想,業(yè)界已經(jīng)有大量關(guān)于“服務(wù)式Web”的說(shuō)明和評(píng)論。就Web的初創(chuàng)階段來(lái)說(shuō),它只是一個(gè)文檔的集散地,提供的只是一些可瀏覽的信息。隨著Web的發(fā)展,在Web上運(yùn)行服務(wù)越來(lái)越具有吸引力。未來(lái),Web將成為企業(yè)為客戶和其他企業(yè)提供便捷服務(wù)的載體。B2B和B2C模式間的協(xié)同就可以看成是一種服務(wù)式Web。

一個(gè)很重要的問(wèn)題是,Web上究竟可以提供哪些服務(wù)?Web能夠提供的服務(wù)非常多,其中有些服務(wù)現(xiàn)在已經(jīng)在使用,有些服務(wù)在不久的將來(lái)就會(huì)出現(xiàn)。為了說(shuō)明問(wèn)題,下面列出了一小部分可以通過(guò)Web提供的服務(wù):

面向主題的垂直搜索引擎。
供用戶查找信息的知識(shí)庫(kù)。
用戶可以請(qǐng)教問(wèn)題的專家系統(tǒng)。
銀行服務(wù)。
新聞和信息出版服務(wù)。
數(shù)字化支付相關(guān)的服務(wù)。
圖形處理服務(wù)。
衛(wèi)生和健康服務(wù)。

那么,企業(yè)和組織通過(guò)Web提供服務(wù)的正確途徑是什么呢?這是一個(gè)很重要的問(wèn)題。今天,有些服務(wù)提供HTML界面,它們通過(guò)文檔的形式提供服務(wù),但在服務(wù)界面的背后隱藏著什么?在占領(lǐng)Web的競(jìng)賽中,Web瀏覽器并不孤單,移動(dòng)電話、手持設(shè)備以及微波爐之類的設(shè)備都想要訪問(wèn)Web、查詢數(shù)據(jù)庫(kù)、轉(zhuǎn)換數(shù)據(jù)、提取信息,等等。要實(shí)現(xiàn)真正的服務(wù)式Web,在表現(xiàn)層(HTML)之下應(yīng)該還有另外一層。

二、XML_RPC標(biāo)準(zhǔn)
XML或許是近10年來(lái)最為重要的標(biāo)準(zhǔn),XML詞匯表(Vocabulary)為企業(yè)構(gòu)造服務(wù)環(huán)境提供了基石。要構(gòu)建服務(wù)式Web就有必要學(xué)習(xí)XML_RPC標(biāo)準(zhǔn),這不僅是因?yàn)閄ML_RPC對(duì)于把服務(wù)放到Web上很有用,而且因?yàn)閄ML_RPC是一種已經(jīng)成形的、很容易采用的標(biāo)準(zhǔn)。對(duì)于B2B服務(wù)來(lái)說(shuō),提供服務(wù)的標(biāo)準(zhǔn)是極其重要的,共同遵循標(biāo)準(zhǔn)的公司可以利用其它公司提供的服務(wù)獲得快速的增長(zhǎng)。無(wú)法想象在各種私有的服務(wù)標(biāo)準(zhǔn)之上可以建立起真正的服務(wù)式Web,服務(wù)必須有一種可以遵循的標(biāo)準(zhǔn)。

XML_RPC是一種面向InterNET分布式處理的標(biāo)準(zhǔn)。RPC即為Remote Procedure Call(遠(yuǎn)程過(guò)程調(diào)用)的縮寫,它是一種遠(yuǎn)程調(diào)用機(jī)制,用于調(diào)用可能駐留在其他機(jī)器之上以及可能用其他語(yǔ)言編寫的過(guò)程。遠(yuǎn)程過(guò)程調(diào)用是分布式計(jì)算的重要支柱。例如,在一個(gè)分布式計(jì)算環(huán)境中,我們可以尋找和利用在其他機(jī)器上運(yùn)行的執(zhí)行加法和減法操作的過(guò)程,執(zhí)行加法操作的過(guò)程可能用APL編寫、在RS6000機(jī)器上運(yùn)行,執(zhí)行減法操作的過(guò)程可能用C編寫、在Unix上運(yùn)行。其他要使用這種分布式計(jì)算器的開(kāi)發(fā)者同樣可以利用它們,或者他也可以選用另外更好的計(jì)算器。

在RPC中,過(guò)程(Procedure)是最主要的構(gòu)件,服務(wù)器提供的就是供客戶端調(diào)用的過(guò)程。過(guò)程可以接收參數(shù)并返回結(jié)果。XML_RPC以HTTP作為協(xié)議載體,通過(guò)發(fā)送和接收數(shù)據(jù)的XML詞匯表實(shí)現(xiàn)RPC機(jī)制。XML_RPC服務(wù)器接收XML_RPC請(qǐng)求并返回XML_RPC應(yīng)答,XML_RPC客戶程序發(fā)送XML_RPC請(qǐng)求并接收XML_RPC應(yīng)答。服務(wù)器和客戶必須按照XML_RPC標(biāo)準(zhǔn)的要求處理應(yīng)答和請(qǐng)求。

三、XML_RPC協(xié)議
完整的XML_RPC規(guī)范可以在http://www.xmlrpc.com/spec找到。下面是其要點(diǎn)說(shuō)明。

3.1 XML_RPC請(qǐng)求

XML_RPC請(qǐng)求應(yīng)該是HTTP POST請(qǐng)求,它的正文是XML格式。請(qǐng)求的XML部分格式如下:

<?xml version="1.0" ?>
<methodCall>
<methodName>examples.getStateName</methodName>
<params>
<param>
<value><i4>41</i4></value>
</param>
</params>
</methodCall>


指定數(shù)據(jù)發(fā)送到哪里的URL并未在這里指定。如果服務(wù)器專門用來(lái)進(jìn)行RPC處理,它可能是“/”。上述XML文檔中的有效載荷是一個(gè)“methodCall”結(jié)構(gòu)。methodCall必須包含一個(gè)“methodName”子元素,“methodName”子元素包含一個(gè)描述待調(diào)用方法的字符串。如何解釋“methodName”的內(nèi)容完全由服務(wù)器決定,例如它可以是一個(gè)執(zhí)行文件的名字,可以是數(shù)據(jù)庫(kù)中記錄的名字,或者任何其他東西。如果過(guò)程接收參數(shù),“methodCall”可以包含一個(gè)“params”元素以及若干個(gè)“param”子元素。每一個(gè)“param”元素包含一個(gè)帶有類型描述符的值,類型描述符如下表所示:


標(biāo)記 說(shuō)明
<i4>或<int> 四字節(jié)的帶符號(hào)整數(shù),如12
<boolean> 0(false),或1(true)
<string> 字符串,如“Hello World”
<double> 雙精度帶符號(hào)浮點(diǎn)數(shù),如-12.214
<dateTime.iso8601> 日期/時(shí)間,如19980717T14:08:55
<base64> base64編碼的二進(jìn)制數(shù)據(jù),如eW91IGbid0IHJlQgdGhpcyE


3.1.1 結(jié)構(gòu)

值可以是一個(gè)結(jié)構(gòu),結(jié)構(gòu)用<struct>元素描述。每個(gè)<struct>包含多個(gè)<member>,每個(gè)<member>包含一個(gè)<name>和一個(gè)<value>。下面是一個(gè)由兩個(gè)元素構(gòu)成的結(jié)構(gòu):

<struct>
<member>
<name>name</name>
<value><string>member1</string></value>
</member>
<member>
<name>member2</name>
<value><i4>19</i4></value>
</member>
</struct>


<struct>可以嵌套,任意<value>可以包含<struct>或者任意其它類型,包括<array>。

3.1.2 數(shù)組

值可以是數(shù)組類型,數(shù)組用<array>元素描述。每個(gè)<array>元素包含一個(gè)<data>元素,<data>元素里面可以包含任意多個(gè)<value>元素。下面是數(shù)組元素的一個(gè)例子:

<array>
<data>
<value><boolean>0</boolean></value>
<value><i4>9</i4></value>
<value><string>Hello</string></value>
</data>
</array>


<array>元素沒(méi)有名字。如前例所示,<array>元素的值可以是各種類型。<array>元素可以嵌套,任何<value>都可以包含<array>或者其他類型,如上面介紹的<struct>。

3.2 XML_RPC應(yīng)答

XML_RPC應(yīng)答是一個(gè)HTTP應(yīng)答,內(nèi)容類型是text/xml。應(yīng)答正文的格式如下:

<?xml version="1.0"?>
<methodResponse>
<params>
<param>
<value><string>ABCDEFG</string></value>
</param>
</params>
</methodResponse>


<methodResponse>可能包含一個(gè)<params>結(jié)構(gòu),或者可能包含一個(gè)<fault>結(jié)構(gòu),具體由過(guò)程調(diào)用是否成功決定。<params>結(jié)構(gòu)與XML請(qǐng)求中的一樣,<fault>元素的語(yǔ)法如下:

<fault>
<value>
<struct>
<member>
<name>faultCode</name>
<value><int>4</int></value>
</member>
<member>
<name>faultString</name>
<value><string>Error!</string></value>
</member>
</struct>
</value>
</fault>

php技術(shù)在PHP中利用XML技術(shù)構(gòu)造遠(yuǎn)程服務(wù)(上),轉(zhuǎn)載需保留來(lái)源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 噼里啪啦免费观看视频大全 | 999精品国产人妻无码系列 | 四川老师边上网课边被啪视频 | 日本一区精品久久久久影院 | 久久精品视频在线看15 | 日韩欧美一区二区三区在线视频 | 国产亚洲精品精品国产亚洲综合 | 最新亚洲中文字幕在线观看 | 国产欧美另类久久久品 | 美女动态图真人后进式 | 欧美18在线| 学生小泬无遮挡女HD | 青青草原影视 | 92精品国产成人观看免费 | 亚洲国产第一区二区三区 | 毛片免费播放 | 国产成人免费不卡在线观看 | 国产曰韩无码亚洲视频 | 亚洲最大在线视频 | 亚洲精品视频在线观看视频 | 国产AV一区二区三区日韩 | 精品国产免费人成视频 | 在线精品国精品国产不卡 | 成人天堂婷婷青青视频在线观看 | 在线视频 中文字幕 | 青娱乐极品视觉盛宴国产视频 | xxxxhdvideos动漫| 国产又粗又猛又爽黄老大爷 | 欧美成人亚洲高清在线观看 | 国产精品99re6热在线播放 | 亚洲色欲色欲WWW在线丝 | 我的好妈妈8高清在线观看WWW | 国产精品欧美一区二区在线看 | 亚洲AV香蕉一区区二区三区蜜桃 | 欧美手机在线 | 妹妹我要操 | 俄罗斯xxxxxbbbbb| 久久这里只精品国产99re66 | 午夜福利免费视频921000电影 | 亚洲精品m在线观看 | 伊人狠狠丁香婷婷综合尤物 |