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(); 
} 
?>