浏览模式: 标准 | 列表

昨天在 javaeye 上随便发了一个关于 PHPRPC 与 Java、Hessian 等性能对比评测的帖子, 没想到,当天晚上就有许多朋友加入了 PHPRPC 群,并且这个帖子也成了 javaeye 上的热门帖,今天早上一起床,打开 QQ 又发现 n 多朋友入群,也都是来自 javaeye 的。之前也在 javaeye 上发过一些关于 PHPRPC 应用介绍的帖子,不过在就像打水漂一样,几乎都没人理会。但是向这种评测的帖子,在 javaeye 上也发过一个在 .NET 中的性能对比,可是也没有人理会。而这次却突然就火了,对此事我总结了两点:

1、数据确实能说明问题,有对比数据才能让人信服。

2、发帖子要看地方,在 java 的地盘上只有 java 的话题才能吸引人,如果谈 .NET 只能被冷落。

其实这个帖子也差一点就沉底,幸亏了 robbin 兄及时的支持和解释(否则又被人当作是 PHP 的 RPC 啦),才让这个帖子和 PHPRPC 发扬光大。感谢 robbin 兄!

» 阅读全文

这两个文档写了有一年了,前前后后随着代码的更新也反复修改,现在 PHPRPC 3.0 版本已经稳定下来了,如果没有 bug 的话,就不会再更新了。所以,文档终于也有了定稿!

今天正好初一,这两部指南算是送给各位关心 PHPRPC 的用户的一份新年礼物啦!

英文版本暂时还没有人来翻译,如果有高手愿意协助我完成翻译的话,我先在这里替大家感谢您十八辈祖宗了!

接下来,就要开始进行 PHPRPC 3.1 的计划了,大家不要问我何时能看到 3.1 版本,因为何时能够完成 3.1 版本的协议和实现我现在也不知道,等完成时,我自然会第一时间放出来的。所以大家现在就放心使用 3.0 版本吧!

» 阅读全文

12月
31

PHPRPC 3.0.1 for Delphi 发布

这是今年发布的 PHPRPC 的最后一个版本更新,也是 PHPRPC 3.0 协议实现的最后更新。从明年将开始 PHPRPC 3.1 协议的制定与实现,3.0 版本的协议实现因为已经稳定,所以不再进行更新。

本次更新的主要内容有:

  • 移除了 PHPUtils.pas。
  • 将原来 PHPUtils.pas 中的所有内容移动到 PHPRPC.pas 中。
  • 将 TPHPObject 的基类从 TObject 改为 TComponent。
  • 修改了 TPHPObject 的反序列化方法,将被反序列化的对象设为其所有属性及其属性相关对象的拥有者,这样,当该对象被释放时,所有与该对象属性相关的对象也会一同被释放。
  • 对 THashMap 的反序列化方法做了同样的修改。
  • 消除了在 Delphi 2009 上编译时的所有警告。
  • 使 Delphi 2009 跟 Delphi 6-2007 都可以以同样的方式工作。
  • 修改了 ByteArrayToString 和 StringToByteArray 方法,使其可以在不需要转换时仍然可以正常工作。
  • 修改了对字节数组的序列化和反序列化方式,使其按照原始字节字符串方式进行序列化和反序列化。
  • 为 TPHPRPC_Client 增加了 StringAsByteArray 属性,当该属性设置为 true 时,则原始字节字符串将按照字节数组进行反序列化。
  • 为 PHPRPC_Client 组件增加了图标。

» 阅读全文

12月
31

2009年的 PHPRPC 开发计划

  • 升级协议到3.1版,增加更多可以提高效率的特性(如立即清除服务器端密钥的请求等),并完全兼容现有版本。
  • 提供更多常用编程语言的实现(如 C/C++、D、Erlang 等)。
  • 为PHPRPC协议提供TCP、UDP绑定版本,并实现与现有 HTTP 绑定版本的无差别编程接口,可以让企业内部的分布式软件构建更加简单高效。

» 阅读全文

下面是对在 .NET Framework 3.5 中对 PHP、Binary、SOAP、XML、JSON、Hessian 和 Burlap 序列化/反序列化的效率对比,其中 PHP 序列化来自最新版本的 PHPRPC 3.0.1 for .NET,Hessian 和 Burlap 序列化来自Hessian C# 的最新版 1.3.3,其它的序列化都是采用 .NET Framework 3.5 中内置的功能。

测试程序可从此处下载:test.zip

下面是测试程序的运行结果图:

大小: 30 K
尺寸: 500 x 292
浏览: 0 次
点击打开新窗口浏览全图

大小: 30.4 K
尺寸: 500 x 292
浏览: 0 次
点击打开新窗口浏览全图

大小: 30.33 K
尺寸: 500 x 292
浏览: 0 次
点击打开新窗口浏览全图

大小: 29.72 K
尺寸: 500 x 292
浏览: 0 次
点击打开新窗口浏览全图

大小: 31.22 K
尺寸: 500 x 292
浏览: 0 次
点击打开新窗口浏览全图

大小: 29.51 K
尺寸: 500 x 292
浏览: 0 次
点击打开新窗口浏览全图

大小: 34.28 K
尺寸: 500 x 292
浏览: 0 次
点击打开新窗口浏览全图

大小: 34.41 K
尺寸: 500 x 292
浏览: 0 次
点击打开新窗口浏览全图

大小: 36.12 K
尺寸: 500 x 292
浏览: 0 次
点击打开新窗口浏览全图

大小: 39.11 K
尺寸: 500 x 292
浏览: 0 次
点击打开新窗口浏览全图

大小: 35.34 K
尺寸: 500 x 292
浏览: 0 次
点击打开新窗口浏览全图

大小: 34.93 K
尺寸: 500 x 292
浏览: 0 次
点击打开新窗口浏览全图
 

从上面的运行结果来看 PHP 序列化和反序列化:

对于基本类型的效率跟 Hessian 不相上下,远远超过其它序列化方式,甚至比 .NET 的 Binary 序列化和反序列化都要快好几倍。但是 Burlap 不支持浮点数的无穷大表示。

对于字节数组来说,速度是 Binary 序列化的 2 倍,是 Hessian 的 10 倍,是 Burlap 的 25 倍,是 SOAP 的 36 倍,是 JSON 的 1000 多倍!

对于数组来说,具有相同元素的数组,比 Binary 序列化要差一些,但是远远超过 SOAP、XML、JSON、Hessian 和 Burlap。具有不同元素的数组,跟 Binary、Hessian 序列化效率接近,比 XML、JSON、Burlap 稍快,远远超过 SOAP。

对于 Hashtable 来说,效率也是超过 .NET Binary、Hessian 和 Burlap 序列化。比 SOAP 快近 10 倍,比 JSON 快了近 100 倍!而 XML 不支持。

对于 ArrayList 和自定义类型来说,效率不如 .NET Binary 序列化,但是仍然远远超过 SOAP、Hessian 和 Burlap,而 XML 和 JSON 则根本不支持。

而在空间占用上,其效率也超过了 Binary、SOAP、XML、Burlap,在基本类型上与 JSON、Hessian 不相上下,对于数组、Hashtable 则远远超过 JSON。

所以,从上面的对比来看,PHPRPC 中所使用的 PHP 序列化是一种非常高效的数据表示方式,远远超过 SOAP、XML、JSON、Burlap 等序列化方式。其效率跟 .NET Binary、Hessian 序列化的效率可以算是不相上下,在综合水平上甚至超越了 .NET Binary、Hessian 序列化。另外在跨语言跨平台方面,PHPRPC 所使用的 PHP 序列化方式则比 .NET Binary 序列化要好的多,而 PHPRPC 本身又在稳定性、易用性、安全性、功能性和脚本语言的支持上又比 Hessian 好很多,通过这些数据我想更加可以说明 PHPRPC 的优秀了。

» 阅读全文