就remoting协议而言,用得比较多的是hessian与phprpc,但phprpc的转化效率比hessian高很多。以下链接是牛人对此两者的序列化/反序列化效率作出的比较:
http://www.iteye.com/topic/333720
我因为开发的需要,对两者能支持的数据类型也进行了一些测试和比较,总结如下:
hessian
1.不支持集合内含有char数组;
2.除1外,完美支持各种集合、元素类型的解析转换;
phprpc
1.不支持集合内value为string类型的值,需由客户自己转换,代码如:new String((byte[])test.getMap().get("1"),"utf-8")
2.集合内除byte[]外,不支持其它数组,如int[]、float[]、char[]等
乍一看觉得用hessian就够了,虽然hessian对集合内的char数组不支持转换,但是由于在实际运用中使用机率较低。但是眼看着效率高hessian N倍的phprpc不用怪蛋痛,于是着手研究代码,企图从源码解决这个不支持集合内value为string类型值的问题。
其实问题原因在于PHPRPC在反序列化(unserialize)过程,无法正确识别集合中子元素的字符串类型。而PHPRPC中,负责序列化与反序列化过程的类为PHPSerializer.java。所以定位好问题后就不难解决了。此处省略N千字,其实也就是添加一行代码的问题,却耗尽了一整个下午的精力。以下是编译好了的spring2.5需要用到phprpc的三个jar 文件,分别是:phprpc_client.jar phprpc_spring.jar phprpc.jar。
下载便能用。
分享到:
相关推荐
标题 "PHPRPC的源码JAR" 指向的是一个开源项目,它涉及到PHP和Java之间的远程过程调用(RPC)技术。PHPRPC是一个高效、轻量级的跨平台通信框架,使得PHP与Java应用之间能够方便地进行数据交换和功能调用。 描述中的...
PHPRPC for Delphi 对容器类型的支持 PHPRPC for Delphi 对自定义类型的支持 另外,PHPRPC 还提供了 Lazarus(Free Pascal)版本,Lazarus 与 Delphi 很像,你可以认为它是一个开源版本的 Delphi。只不过现在的 ...
Hadoop rpc源码是从Hadoop分离出的ipc,去掉了认证部分,附录使用文档.使用前请add lib包commons-logging-*.*.*.jar(我用的是1.0.4)和log4j-*.*.*.jar(我的1.2.13) 相关blog post: ...
三、手写RPC源码学习 在手写RPC的过程中,我们需要关注以下几个关键步骤: 1. **接口定义**:定义客户端和服务端共享的接口,这通常是通过idl(Interface Definition Language)完成。 2. **序列化/反序列化实现*...
- **微服务架构**:在微服务中,每个服务都可以作为一个独立的RPC服务,互相调用以协同工作。 - **异构系统集成**:PHP RPC可以用于连接不同编程语言的系统,如PHP与Python、Java等。 **文件内容** - **AUTHORS**...
安装Phprpc非常简单,一般只需要下载源码并按照文档中的步骤进行配置。同时,文档会指导如何设置服务器环境,确保PHP版本兼容,以及如何配置服务端和客户端的连接参数。 4. **服务定义与调用** 在Phprpc中,服务...
Phprpc支持数据加密和身份验证,以保障通信安全。同时,它的高性能得益于高效的序列化和反序列化机制,以及异步处理能力。在实际应用中,可以根据需求进行相应的安全配置。 8. **扩展性与应用场景** Phprpc的跨...
Phprpc提供了一种序列化和反序列化机制,可以将Python对象转换为PHP能理解的数据格式,反之亦然。此外,它还支持异步调用,提高了性能。在实际应用中,你可能需要处理错误,例如网络故障或服务端异常,可以使用try-...
RPC框架的一个显著特点是其跨语言的能力,这表明PHPRPC3.0不仅限于PHP,还支持ASP、Delphi、Java、ActionScript 2、ActionScript 3等多种语言。这意味着开发者可以利用他们熟悉的语言来实现远程调用,大大提高了灵活...
Tars是基于名字服务使用Tars协议的高性能RPC开发框架,同时配套一体化的服务治理平台,帮助个人或者企业快速的以微服务的方式构建自己稳定可靠的分布式应用。 tars协议采用接口描述语言(Interface description ...
提供的“3.0 XML-RPC 官方示例+源码+官网地址资料”应该包含了详细的使用指南、示例代码和官方文档,这些资源可以帮助开发者快速理解和使用XML-RPC 3.0。记得查看资料中的“资料”文件,它可能包含了更多实用的信息...
PHPRPC支持多种序列化协议,如JSON、XML和二进制,以适应不同的性能和兼容性需求。这些协议决定了数据在网络中的传输格式,确保两端能正确解析对方发送的信息。 标签中的"PHPRPC For ."可能表示这个版本是专门为...
5. **自动类型转换**:自动处理不同语言之间的类型转换,简化了跨语言编程的复杂性。 6. **异步调用**:支持异步调用模式,可以在不阻塞主线程的情况下执行耗时操作。 7. **多线程支持**:在Delphi端,可以充分...
phprpc for .net 源代码都有,可修改
Phprpc使用PHP内置的序列化机制将函数调用的参数和返回值转换为可以在网络上传输的字符串。这个过程涉及到将变量转化为字符串,以便在网络中传输,到达目的地后再还原为原来的结构。这确保了数据的完整性和一致性。...
本资源是针对入门级RPC框架的源码学习,包含了学习过程中的一些流程图,对理解RPC的工作原理和实现机制非常有帮助。 首先,我们来看看“mongo”这个标签,它通常指的是MongoDB,一个流行的NoSQL数据库。在RPC框架中...
Phprpc.jar是一个Java库,专门用于处理PHP的序列化数据,使得Java应用程序能够与PHP环境进行跨语言的通信。这个工具包的核心功能是反序列化PHP序列化的字符串,允许Java程序理解和操作PHP生成的数据结构。在Java中,...
这是一个PHPrpc客户端文件