1. 程式人生 > >關於SOAP的幾篇文章

關於SOAP的幾篇文章

轉載自:http://www.neatstudio.com/show-1598-1.shtml

PHP操作soap我總覺得是一件非常痛苦的事情,但沒有辦法,現在很多功能都是基於WebService的,比如那個amazon的,但其實很多 公司都也還是提供了restful之類的介面,使得PHP與其他系統的資料交換比較方便。但讓人痛苦的,有時候,你PHP不得不充當 soapServer,這時候,怎麼做呢?zendstudio可以根據你的函式和類,幫你生成wsdl,但大多數情況下,你沒有直接生成的手段,怎麼 辦?官方的soapServer功能也太少了一點。你是否還準備用nuSoap來充當server呢?

蒐集了一些資料,用來方便的協助你生成soap介面。如果只是自己的內部呼叫,可以嘗試用phprpc或者它的升級版hprose進行嘗試。

2、利用PHP5自帶的soapServer,在手冊上,關於如何建立,寫了很多例子,就象:

反正,我是覺得很痛苦,不過所幸現在的IDE都支援了直接釋出wsdl檔案,netbeans可以,zendstudio也可以。所以,也就方便了開發

比如,它預設就自帶了一個contactManager的釋出,具體的一些配置,可以看config.php,當然你也可以參考它的一些類,也充實你自己的類庫(本來官網有教程的,可能是因為時間太久遠了,該教程已經跳到ipublisher的教程上去了)

4、利用框架實現webService。在這裡,估計又有很多分支了,比如zend framework,比如xxx和xxxx等,我由於最近在用yii,所以就看了yii的一個小小的實現

介紹頁在這裡:http://www.yiiframework.com/doc/guide/1.0/zh_cn/topics.webservice

看它的實現是非常簡單,在Controller裡增加一個轉換wsdl的Action,然後,在要提供的方法上面用phpdoc來進行註釋。定義傳入引數的資料型別等

  • str/string: 對應 xsd:string ;
  • int/integer: 對應 xsd:int ;
  • float/double: 對應 xsd:float ;
  • bool/boolean: 對應 xsd:boolean ;
  • date: 對應 xsd:date ;
  • time: 對應 xsd:time ;
  • datetime: 對應 xsd:dateTime ;
  • array: 對應 xsd:string ;
  • object: 對應 xsd:struct ;
  • mixed: 對應 xsd:anyType .

不過我也確實沒有過多的細看,沒仔細看它對於AUTH驗證支援怎麼樣(第三點裡介紹的工具是有驗證的,而且就設在config.php裡,非常方便)

好了,我就針對現在的soap server的建立,介紹了四種方法,事實上,我到現在為止是一種都沒有用過,nusoap也就用過客戶端,那也是幾年前的事情了,soapClient 也是,在構建soapHeader的時候也走過很多彎路。第三步介紹的工具,我也只是下載了看看原始碼,第四步我是看了看手冊。只是先集中一下,以後總會用 到而已。
雖然說,PHPRPC和hprose 在andot他們介紹來說,開發速度和處理上,都有較為明顯的提高,但如果想做一個公用的web service,那還是用大家都能接受的方法吧。
如果是自己的專案,那可能就會用phprpc或者hprose來了。hprose測試版用過,感覺還是不錯的。phprpc,我也做了一個sae平臺的移 植版,目前也能夠正常的使用。。在這裡也有個簡單的測試:http://nsblog.sinaapp.com/。有興趣的朋友也可以去看看的。