Hessian是Caucho公司所定义的一个remoting on http的轻量级的remoting工具。基于自定义的binary的协议。起初只有Java的实现,而现在是4面开花,.Net,C++,Ruby,PHP的实现皆有出现.而且重要的一点是,所有client和server是互通的,也就是php可以call java的server。
PHP有个非常薄弱的地方,就是在remoting。几乎没有好的remoting方案。曾见过一个基于php的serialize机制的一种remoting方案,但php的serialize本身的低效率,加上数据的冗余及数据类型的局限,实质上并无多大可用场所。我并不想夸Hessian,但确实,无论在哪种语言当中,Hessian都可以成为语言本身Remoting机制和Web Service之间的一个很好的选择。并且,就像在Java Hassian中可以无入侵的使用POJO,PHP中你的Class无需任何改变,便可以暴露为Remoting。下面是简单的HessianPHP的使用。
我们来做个简单的计算测试。Hessian Service端提供一个简单的2数相加的Add方法。
CODE
include_once('../HessianService.php');
class HelloWorldService
{
public function __construct()
{
//
}
public function add($a, $b)
{
return $a+$b;
}
}
$wrapper = new HessianService();
$wrapper->registerObject(new HelloWorldService);
$wrapper->service();
?>
而Client也非常简单明了。
CODE
include_once('../HessianClient.php');
function println($var=''){
echo $var.'
';
}
try
{
$url = 'http://localhost:5/hessian/bz/HelloWorldService.php';
$proxy = new HessianClient($url);
println( '
Calling mathService.php at');
println( "$url
" );
println( '2 + 5 = '.$proxy->add(2,5) );
}
catch(HttpError $ex)
{
print $ex->getMessage();
}
catch(HessianError $hex)
{
print $hex->getMessage();
}
?>