注册

什么是RPC服务

本帖最后由 weixinhost 于 2015-3-5 13:13 编辑 _

**RPC的定义**
RPC的全称为 Remote Procedure Call(远程过程调用)。远程过程调用是一个计算机通信协议。该协议允许运行于一台计算机的程序调用另一台计算机的子程序,

而程序员无需额外地为这个交互作用编程。通俗的说,使用了RPC服务之后,就可以像调用一个本地方法一样去调用一个运行于网络中的其他计算机的方法。

**为什么使用RPC**

我们有各种各样的方式将我们的服务发布到互联网中。除了RPC之外,还有Restful API等方式。侯斯特选择RPC作为应用接入方式主要基于以下理由:

* 更加亲近应用开发者,无需处理网络相关细节。
* 相比Restful API方式,在开发上更加的干净舒服。
* SAE全线已经部署该框架,开发者无需自行编译。同时支持标准PHP Extension 安装方式。

**侯斯特使用的RPC框架**
侯斯特全线使用了一款叫做Yar(Yet another RPC framework)的RPC框架。该框架工作于PHP语言。同时,可兼容其他语言。侯斯特选择Yar的理由有:

* 使用C语言开发的 PHP Extension。更加高效。
* 支持串行与并行请求,弥补PHP不支持多线程与异步的缺陷。
* 开发者是PHP语言核心开发者,后续更新更具说服力。

**Example:一个典型的Yar Server例子**
class YarServerExample
{
_/*** _
_ * public的方法可以被远程调用_
_ ***/_
**public** function factory($a,$b){
**return** '返回值'; _//远程调用端可以接收到RPC方法中的 return 值_
}
_/*** _
_ * private 方法不允许被远程调用 _
_ ***/_
**private** function notAllow($a,$b){}
_/*** _
_ * protected 方法不允许被远程调用_
_ ***/_
**protected** function notAllow($a,$b){}
}
_//将类 YarServerExample 注册到Yar服务中,即可通过远程调用该方法。_
$server = **new** Yar_Server(**new** YarServerExample());
$server->handle();
?>

**参考资料**http://zh.wikipedia.org/wiki/%E9%81%A0%E7%A8%8B%E9%81%8E%E7%A8%8B%E8%AA%BF%E7%94%A8
http://pecl.php.net/package/yar http://php.net/manual/zh/book.yar.php
http://www.laruence.com/2012/09/15/2779.html

已邀请:
请问大家有什么看法?我绝对喜欢这个帖子











static/image/common/sigline.gif
90%打工小伙一生都不可能知道的秘密http://user.qzone.qq.com/82175487

要回复问题请先登录注册