<dfn id="w48us"></dfn><ul id="w48us"></ul>
  • <ul id="w48us"></ul>
  • <del id="w48us"></del>
    <ul id="w48us"></ul>
  • 在PHP中利用XML技術(shù)構(gòu)造遠(yuǎn)程服務(wù)

    時間:2024-10-01 09:39:04 XML DOM 我要投稿
    • 相關(guān)推薦

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

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

      一、服務(wù)式Web

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

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

      面向主題的垂直搜索引擎。

      供用戶查找信息的知識庫。

      用戶可以請教問題的專家系統(tǒng)。

      銀行服務(wù)。

      新聞和信息出版服務(wù)。

      數(shù)字化支付相關(guān)的服務(wù)。

      圖形處理服務(wù)。

      衛(wèi)生和健康服務(wù)。

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

      二、XML_RPC標(biāo)準(zhǔn)

      XML或許是近10年來最為重要的標(biāo)準(zhǔn),XML詞匯表(Vocabulary)為企業(yè)構(gòu)造服務(wù)環(huán)境提供了基石。要構(gòu)建服務(wù)式Web就有必要學(xué)XML_RPC標(biāo)準(zhǔn),這不僅是因?yàn)閄ML_RPC對于把服務(wù)放到Web上很有用,而且因?yàn)閄ML_RPC是一種已經(jīng)成形的、很容易采用的標(biāo)準(zhǔn)。對于B2B服務(wù)來說,提供服務(wù)的標(biāo)準(zhǔn)是極其重要的,共同遵循標(biāo)準(zhǔn)的公司可以利用其它公司提供的服務(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)程過程調(diào)用)的縮寫,它是一種遠(yuǎn)程調(diào)用機(jī)制,用于調(diào)用可能駐留在其他機(jī)器之上以及可能用其他語言編寫的過程。遠(yuǎn)程過程調(diào)用是分布式計(jì)算的重要支柱。例如,在一個分布式計(jì)算環(huán)境中,我們可以尋找和利用在其他機(jī)器上運(yùn)行的執(zhí)行加法和減法操作的過程,執(zhí)行加法操作的過程可能用APL編寫、在RS6000機(jī)器上運(yùn)行,執(zhí)行減法操作的過程可能用C編寫、在Unix上運(yùn)行。其他要使用這種分布式計(jì)算器的開發(fā)者同樣可以利用它們,或者他也可以選用另外更好的計(jì)算器。

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

      三、XML_RPC協(xié)議

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

      3.1 XML_RPC請求

      XML_RPC請求應(yīng)該是HTTP POST請求,它的正文是XML格式。請求的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ù)器專門用來進(jìn)行RPC處理,它可能是“/”。上述XML文檔中的有效載荷是一個“methodCall”結(jié)構(gòu)。methodCall必須包含一個“methodName”子元素,“methodName”子元素包含一個描述待調(diào)用方法的字符串。如何解釋“methodName”的內(nèi)容完全由服務(wù)器決定,例如它可以是一個執(zhí)行文件的名字,可以是數(shù)據(jù)庫中記錄的名字,或者任何其他東西。如果過程接收參數(shù),“methodCall”可以包含一個“params”元素以及若干個“param”子元素。每一個“param”元素包含一個帶有類型描述符的值,類型描述符如下表所示:

      標(biāo)記 說明

      <i4>或<int> 四字節(jié)的帶符號整數(shù),如12

      <boolean> 0(false),或1(true)

      <string> 字符串,如“Hello World”

      <double> 雙精度帶符號浮點(diǎn)數(shù),如-12.214

      <dateTime.iso8601> 日期/時間,如19980717T14:08:55

      <base64> base64編碼的二進(jìn)制數(shù)據(jù),如eW91IGbid0IHJlQgdGhpcyE

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

      值可以是一個結(jié)構(gòu),結(jié)構(gòu)用元素描述。每個包含多個,每個包含一個和一個。下面是一個由兩個元素構(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>

      可以嵌套,任意可以包含或者任意其它類型,包括。

      3.1.2 數(shù)組

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

      <array>

      <data>

      <value><boolean>0</boolean></value>

      <value><i4>9</i4></value>

      <value><string>Hello</string></value>

      </data>

      </array>

      元素沒有名字。如前例所示,元素的值可以是各種類型。元素可以嵌套,任何都可以包含或者其他類型,如上面介紹的。

      3.2 XML_RPC應(yīng)答

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

      <?xml version="1.0"?>

      <methodResponse>

      <params>

      <param>

      <value><string>ABCDEFG</string></value>

      </param>

      </params>

      </methodResponse>

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

      <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中利用XML技術(shù)構(gòu)造遠(yuǎn)程服務(wù)】相關(guān)文章:

    關(guān)于XML技術(shù)在數(shù)據(jù)交換中的應(yīng)用09-28

    簡單介紹php構(gòu)造函數(shù)用法08-31

    PHP中curl的使用實(shí)例07-31

    PHP中關(guān)于類的定義10-02

    PHP路由技術(shù)的原理與實(shí)踐10-15

    PHP中函數(shù)的使用說明09-01

    PHP中的排序函數(shù)區(qū)別分析08-23

    php中dirname()和--FILE--常量的用法09-26

    PHP程序員的技術(shù)成長規(guī)劃范文08-10

    PHP中date函數(shù)常用時間處理方法09-13

    主站蜘蛛池模板: 国产精品91av| 国产精品久久久99| 精品国产第1页| 久久精品a亚洲国产v高清不卡| 亚洲国产精品久久久久婷婷老年 | 久久久精品午夜免费不卡| 久久精品国产亚洲77777| 亚洲AV永久无码精品一区二区国产| 国产精品一区三区| 国产成人亚洲精品91专区手机 | 亚洲精品午夜无码电影网| 久久er国产精品免费观看8| 国产VA免费精品高清在线| 欧美激情精品久久久久| 国产韩国精品一区二区三区久久| 精品无码一区二区三区爱欲九九| 在线精品亚洲一区二区| 久久精品免费网站网| 国内精品久久久久久久涩爱| 国产精品综合久成人| 国产精品小黄鸭一区二区三区| 99热这里只有精品国产66| 99久久国产综合精品成人影院| 日韩欧国产精品一区综合无码 | 最新国产の精品合集| 欧美日激情日韩精品| 2021最新国产精品一区| 最新国产精品亚洲| 99久re热视频这里只有精品6| 国产2021久久精品| 国产精品一香蕉国产线看观看| 国产一区二区精品久久凹凸| 国产精品视频九九九| 精品国产人成亚洲区| 日韩精品一区二三区中文 | 国产精品爽爽va在线观看网站| 91精品在线播放| 一本大道久久a久久精品综合| 成人国内精品久久久久影院VR| 国产精品无码素人福利不卡| 欧美成人精品欧美一级乱黄一区二区精品在线 |