hprose 百科内容来自于: 百度百科

松散耦合的服务发布

大部分远程调用技术所发布的服务都需要单独编写常见的服务编写方式有以下几种
中间语言编写接口然后生成服务器端构架代码然后在构架代码中填写服务代码例如CorbaIce 都是采用这种中间语言方式通过继承某个远程对象类来实现服务类例如.NET Remoting通过先编写远程调用接口再实现远程调用接口来实现服务类例如.NET RemotingRMI通过语言的某种特性来标示服务方法例如WCF以上这些方式都紧密耦合方式由于这些方式都有条件限制你不可能将一个已有的本地函数方法对象或类直接发布为远程服务而 Hprose 所发布的服务不需要单独编写一个已有的本地函数方法对象或类可以通过 Hprose 直接发布为远程服务而不需要对它们进行任何改动甚至连某些语言内置的函数和方法都可以直接发布为服务因此这不但方便了新的服务编写而且对已有系统的改造也变的非常方便

同步调用和异步调用

Hprose 既支持同步调用也支持异步调用其同步调用方式与调用本地方法的形式几乎完全一致异步调用方式采用回调形式来处理结果用法相当简单直观其用法与其它远程调用技术相比既容易掌握也容易使用

异常处理

Hprose 不论是在服务器端还是在客户端都具有完善的异常处理机制
在服务器端默认情况下服务器端发生的异常将会被包装后发送到客户端在服务器端不做错误日志记录这有效的提高了服务器端的处理效率但如果需要记录错误日志只要在服务器端挂载一个错误处理事件即可用任何您喜欢的方式来记录错误日志有效的提高了服务器端处理错误日志的灵活性服务器端还可以设置为 debug 模式这种模式下服务器端发生异常后会将详细的错误信息包装后发送给客户端在服务开发阶段非常有用
客户端当进行同步调用时服务器端发生的异常或客户端在调用时发生的网络异常会在客户端直接抛出通过各种语言内置的异常捕获方式就可以捕获并处理异常当进行异步调用时为保证线程安全默认情况下异常不会被抛出而是被静静的忽略当你希望处理它们时只需要为客户端挂载一个错误处理事件就可以处理异步调用时发生的所有异常了

多线程与线程安全

不论是 Hprose 服务器端还是客户端都是线程安全的因此你可以在多线程环境下安全的使用它们而不必为每个线程创建一个对象副本

性能与稳定性

Hprose 采用高效通用的序列化格式和算法不论是序列化后的数据量还是序列化反序列化所花费的时间都远远小于其它远程调用所使用的序列化方式因此在远程调用中与其它方式相比完成同样功能的调用Hprose占用更少的带宽和时间另外在网络传输中Hprose采用流式传输避免了二次编码带来的效率损耗同时有效的节省了内存和CPU的占用
同样一台服务器在同样的带宽下使用 Hprose 发布服务相对于其它方式来说可以承载更大的用户量比其它方式更加高效稳定

类型映射

Hprose 的序列化格式中带有完备的类型信息它与各种语言之间有着固定的完备的类型映射各种语言之间通过这种类型映射机制得以互通Hprose 不但支持各种语言中所有基本类型的互通连复杂的带有图型结构的容器类型与自定义类型都可以完美映射

弱类型与动态性

Hprose 序列化格式中虽然包含有完备的类型信息和到各种语言的类型映射但它与其它远程调用不同的是它还支持弱类型映射机制一种 Hprose 类型可以映射为某语言中的多个类型多种 Hprose 类型也可以映射为某语言中的一种类型有了这种弱类型映射机制强类型语言弱类型语言之间的互通变得更加方便甚至连强类型语言之间的互通都可以享受到弱类型带来的便利
Hprose 与其它远程调用的另一点不同是它具有很强的动态特征例如
它支持调用期的类型绑定它支持可变长参数的调用它支持引用参数传递的调用它支持可变类型参数的调用它支持可变类型结果的调用它支持对不存在的方法进行调用这些特性不仅对于动态语言来说相当有用即便是对于静态语言来说它同样可以享受到这些动态性带来的便利

安全与身份认证

Hprose 支持通过使用 https 方式实现安全的服务发布与调用而且 Hprose 还提供了专用于身份认证的事件机制您只需要挂载自己需要的身份认证事件就可以在服务被调用之前进行身份验证

负载均衡

Hprose 目前基于 HTTP 传输的实现支持众多种类的 Web 服务器任何在 Web 上可以使用的负载均衡手段您都可以直接用于 Hprose 的服务发布中另外您还可以灵活的运用 Hprose 本身来实现各种复杂情况下的负载均衡

事务

事务是面向数据的而 Hprose 是面向动作的因此 Hprose 与事务之间没有直接的联系但是如果你需要在某种语言所发布的服务当中操作数据并需要事务处理时你可以使用那种语言支持的方式来实现事务操作
$firstVoiceSent
- 来自原声例句
小调查
请问您想要如何调整此模块?

感谢您的反馈,我们会尽快进行适当修改!
进来说说原因吧 确定
小调查
请问您想要如何调整此模块?

感谢您的反馈,我们会尽快进行适当修改!
进来说说原因吧 确定