PHPRPC協定,最新版本,版本功能,PHPrpc的特點,輕量級,安全,跨網際,跨語言平台環境,跨域,複雜對象傳輸,引用參數傳遞,內容輸出重定向,分級錯誤處理,會話支持,
PHPRPC協定
最新版本
目前該協定的最新版本為 3.0。該版本目前已有以下幾種語言的實現:
版本功能
●ASP:提供 JScript 和 VBScript 兩種語言的支持。
●ActionScript:提供 ActionScript 2.0 和 ActionScript 3.0 兩個版本的支持。
●Java:支持 JDK 1.4 以上的所有版本,它還支持 Google Android 開發包。另外,它還有單獨的 J2ME 版本,支持 CLDC-1.1 和 MIDP-1.0。
●JavaScript:提供兩個版本的實現,一個使用純 Javascript 實現,另一個需要調用一個 swf 檔案,兩個版本都支持跨域的遠程過程調用,但是使用 swf 的版本不限制參數長度,並且有更好的安全控制機制。這兩個版本已經通過完整測試的瀏覽器包括 IE 5+,Netscape 7+,Firefox,Mozilla,Opera,Safari,Epiphany,Camino 與 Konqueror。並且純 JavaScript 版本還通過了 Pocket IE、Opera Mini、Opera Mobile、iPhone、Android 等手持設備瀏覽器的測試。
●.NET:支持 .NET 框架下所有的語言(如 C#等),並且支持目前所有版本的 .NET Framework 和 .NET Compact Framework,當然它也支持 Mono。
●PHP:支持 PHP4 與 PHP5,同樣支持正處於開發階段的 PHP6。
●Perl:目前該版本尚不成熟,有待完善。
●Delphi/Kylix:提供 Delphi 7.0 和 Kylix 客戶端的支持,不但可以支持 Win32 原生程式開發,而且還支持 Linux 程式開發。最新版本還支持 Delphi 2009 Windows 原生程式開發。
●Python:支持 Python 2.5 與 Python 2.6,而且支持在 Google App Engine 上套用。
●Ruby:該版本支持 Ruby 1.8.5 及其更高版本。伺服器除了支持以 cgi、fcgi、scgi、lsapi 方式運行外,還支持以獨立伺服器 ( mongrel、thin、ebb 或 webrick ) 方式運行。
其中 ASP、.NET、Java 和 PHP 版本除了提供客戶端實現外,還提供了伺服器端實現。
PHPrpc的特點
輕量級
PHPRPC 與 SOAP 不同,雖然 SOAP 號稱是簡單對象存取協定。但是實際上它一點都不簡單,甚至可以說,它的協定內容是一般人所無法理解的。除了複雜的定義,它還具有複雜且混亂的實現,且不要說在異構系統中部署套用,即使在同一種語言下部署,它也絕對算得上是重量級的。而 PHPRPC 卻是輕量級的,它的協定相當簡單,從僅靠我一人之力就可以實現出十幾種語言的版本這個事實就可以很容易的看出來。它的數據表示也相當高效,不論在處理還是傳輸上都比 SOAP 要快得多。它在部署和使用時,更加簡單,它的 .NET 版本甚至比微軟為 .NET 提供的 WebService 都容易使用,你甚至不需要藉助 Visual Studio 就可以輕鬆構建 PHPRPC for .NET 的套用。其它語言版本的部署和使用跟 .NET 版本差不多,甚至更加簡單。
安全
在安全方面,PHPRPC 並沒有像 SOAP 那樣專門制定一個 WS-Security 來解決安全性問題。而是內置了加密傳輸機制,雖然這個加密機制沒有 WS-Security 那么複雜,但絕對是從眾多的安全加密機制中精選出來的。它可以保證你的數據在非加密的 HTTP 網路上安全傳輸。
跨網際
PHPRPC 是工作於 HTTP 協定之上的遠程調用協定,因此它具有與 SOAP 同樣的好處——它可以自由的在 Internet 上被廣泛的部署套用。在這個網際網路套用占據主導地位的年代,它比那些基於私有通訊協定的遠程調用在套用上更具優勢。
跨語言平台環境
PHPRPC 目前支持十幾種程式語言,而且這些支持的程式語言都是目前被廣泛使用的主流程式語言。這些語言支持不同的平台與環境,因此在跨語言的同時,也實現了跨平台,跨環境。而且隨著 PHPRPC 的發展,你將發現 PHPRPC 會支持更多的語言,包括你所見過、使用過,以及從來沒有聽說過的語言。
跨域
PHPRPC 最大的一個亮點就是它支持在瀏覽器環境中通過 JavaScript 來調用伺服器端的函式與方法,它將你以前用傳統的 ajax 方式做不到或者很難做到的事情變得輕而易舉!而在這個亮點中更大的亮點是,它還支持在瀏覽器環境中直接跨域調用。而且在跨域方面,它還針對不同的套用作了不同的實現。這是 SOAP 所做不到的。
複雜對象傳輸
你可以在各種不同的語言之間通過 PHPRPC 自由的交換數據,不論是基本數據類型,還是複雜對象,它都可以幫你輕鬆傳輸。雖然 SOAP 也聲稱可以在各種語言之間交換複雜數據,可是實際套用卻完全不是那么回事,在許多語言中你甚至不得不手工去構造那些晦澀難懂的 XML,來傳輸所謂的自定義類型,這種意義上的自定義類型傳輸甚至還不如字元串傳輸更容易被理解。而在 PHPRPC 中你卻完全不需要做這種無意義且損傷腦細胞的事情,你會發現你將可以用前所未有的簡單方式在不同的語言之間傳輸複雜對象,簡單到就像在同一個程式中傳輸它們一樣。
引用參數傳遞
PHPRPC 還支持引用參數傳遞,你除了可以通過遠程函式或方法的返回值得到結果外,你還可以通過參數來返回數據,儘管大多數情況下你用不到這個特性,不過一旦需要,你會發現非常有用。
內容輸出重定向
除了通過返回值和參數來得到返回數據以外,你還可以通過輸出的方式來返回數據,而且通過該方式返回較大量的數據時,比通過返回值來返回數據還要高效。
分級錯誤處理
在遠程調用時,對於某些語言來說,並不是所有的錯誤都會影響結果,因為這些錯誤可能只是警告類信息,在這種情況下,PHPRPC 在返回結果的同時,也會返回警告信息。只有當發生致命錯誤時,才會只返回錯誤信息。這種處理方式可以讓調用者得到更多想要的信息。
會話支持
對於支持會話的伺服器,你可以在你的遠程函式或方法中使用會話,這將十分有效的幫助你對狀態進行管理。