由於看到有人問 Nusoap 和 PHPRPC 的比較,爲了讓你們可以更清楚地瞭解 Nusoap 和 PHPRPC 的關係,因此在這裏作一個簡要的說明性介紹,所寫的內容也不是面面俱到的,只寫了一些主要的比較。更多細節的比較你們能夠在使用中本身來對比。跨域
Nusoap 是一個用於 PHP 的 Web Service 實現。PHP 版本的 PHPRPC 協議實現跟 Nusoap 是一個級別的東西。可是 PHPRPC 協議是跟 Web Service 一個級別的東西,因此下面咱們來把 Nusoap 實現跟 PHP 版本的 PHPRPC 協議實現進行比較,把 Web Service 和 PHPRPC 協議進行比較。數組
第1、協議比較:瀏覽器
相同之處:
這兩個協議都是基於 HTTP 協議的,均可以使用 POST 方法提交請求。
主要不一樣之處:
(1) 請求:WebService 雖然也支持 GET 方式提交請求,可是通常不經常使用,經常使用的方式是利用 POST 方法提交 SOAP 格式的請求。而 PHPRPC 支持 GET 和 POST 兩種方式來提交請求,請求格式是最多見的 application/x-www-form-urlencoded 格式,這對於實現一個瀏覽器客戶端來講更加容易。
(2) 響應:WebService 返回的響應是 SOAP 格式的數據,對於瀏覽器客戶端來講,只有利用 XMLHttpRequest 纔可以對其進行處理,由於 XMLHttpRequest 收到跨域調用的限制,所以 WebService 的瀏覽器客戶端沒法作到跨域調用服務。PHPRPC 的響應格式是兼容於 JavaScript 格式的純文本,所以返回的響應能夠直接做爲腳本執行,所以實現瀏覽器客戶端能夠徹底不依賴於 XMLHttpRequest,利用純 JavaScript 便可實現一個瀏覽器客戶端,而瀏覽器容許跨域下載並執行腳本,所以 PHPRPC 的瀏覽器客戶端能夠作到跨域調用。
(3) 數據交換格式:WebService 中所使用的 SOAP 格式是基於 XML 語言定義的,XML 語言是純文本的,由於其中的某些位置能夠增長或刪除一些空白(空格、製表符、回車或換行)而不影響其所表示的內容,所以其格式能夠整理成便於人來閱讀的, 但也因爲這點的靈活性,對於機器處理來講效率偏低。而 PHPRPC 的數據交換格式是 PHP 序列化格式,PHP 序列化格式能夠算是半純文本的,由於其數據的表示格式也是採用人類可讀的方式表示的,但其中任何位置都不能夠插入多於的空白,它對機器的可讀性做了很好的 支持,不但提供了有效的分隔符,而且提供了字符串長度、數組元素個數、對象成員個數等信息,因此更有利於機器高速處理。由於協議本質上是機機語言,而不是 計算機程序設計語言,計算機程序設計語言是人機語言,它應該更偏重於人類可讀性,而機機語言應該更重視機器可讀性。所以能夠說 PHP 序列化格式在人類可讀性和機器可讀性之間作到了很是好的平衡。
(4) 帶寬佔用:WebService 是重量級的 Web 服務,其數據格式冗長拖沓,佔用網絡帶寬高。PHPRPC 是輕量級的 Web 服務,其數據格式簡單緊湊,佔用網絡帶寬低。注意,這裏所說到重量級和輕量級是指網絡帶寬佔用,而不是指其提供服務的能力,PHPRPC 所提供的服務能力毫不遜色於 WebService,甚至在不少地方優於 WebService。打個比方說:WebService 就像是 OSI 的 7 層網絡模型,看似完美,但實現複雜,使用困難。而 PHPRPC 則像是簡化了的 TCP/IP 的 5 層網絡模型,實現高效,使用方便。安全
第2、而後咱們再來比較 Nusoap 和 PHP 版本的 PHPRPC協議實現:
相同之處是都用於 PHP。
不一樣之處主要在於 易用性上,Nusoap 雖然在易用性上作的還算不錯,可是跟 PHP 版本的 PHPRPC 協議實現來比較就差太遠了。例如,利用 Nusoap 發佈的服務函數須要單獨編寫,而不能使用跟本地函數一樣的方式進行編寫,更沒法使用 PHP 中內置擴展的函數,而 PHPRPC 所發佈的函數跟本地函數徹底同樣,甚至包括 PHP 內置擴展的函數也能夠直接發佈。要用 Nusoap 發佈一個 wsdl,須要爲每個發佈的過程的名稱、參數名、參數類型、返回值類型、名空間、動做、樣式、文檔等內容進行定義。而要發佈一個 PHPRPC 服務,只須要告訴服務器要發佈的那個函數(也能夠是對象方法或類方法)的名字(還能夠給出別名)便可。而不須要給出參數名、參數類型、返回值類型等信息。 所以對於變長參數,可變類型參數的支持更好。在 PHPRPC 客戶端的使用上,也是一樣的方便,能夠直接以遠程函數名命名的本地 PHPRPC 客戶端的方法來調用遠程函數,而 Nusoap 相對來講比較麻煩一些。PHPRPC 還有一個很大的優點在於,它可讓你很輕鬆的以安全加密傳輸的方式來進行遠程調用,這一點 Nusoap 是作不到的。服務器