rpcおよびphpで使用されるrpc
4330 ワード
目次
1.rpcに関する知識準備
rpcのフルネームはremote procedure callで、翻訳するとリモートプロシージャ呼び出しです
リモートコールとは、プログラム呼び出しのメソッド実装がプログラムが存在するローカルではなく、リモートのどこかにあることを意味します.リモートコールの利点は、デカップリングです.【serverがメソッド内の修正を必要とする場合、clientは変更する必要がなく、変更する必要はありません.この方法は部門をまたいで、会社をまたいで協力するときによく使われ、メソッドの提供者は一般的に「サービスの暴露」と呼ばれています.
1.1リモートコールの原理
例えば、A(client)呼び出しB(server)が提供するremoteAddメソッド:
RPCフレームワークは、私がさっき言ったこれらの細部をカプセル化し、ユーザーに簡単で友好的なAPIの使用を暴露することです.
1.2リモートコールとSocket Restの違い
RPC、Socket、Restはクライアント/serverモード
2.ポピュラーなrpcフレームワーク
phprpc,yar, thrift, gRPC, swoole, hprose
2.1 phprpc例
まず簡単な例を示しますが、phprpcもサーバ側とクライアントに分かれています.フォルダにはphprpcが対応していますserver.phpとphprpc_client.php
phprpc_client.php
include ("phprpc/phprpc_client.php");
$client = new PHPRPC_Client('http://127.0.0.1/server.php');
echo $client->HelloWorld();
phprpc_server.php
include ("phprpc/phprpc_server.php");
function HelloWorld() {
return 'Hello World!';
}
$server = new PHPRPC_Server();
$server->add('HelloWorld');
$server->start();
2.2 yar例
まず簡単な例を挙げますが、yarもサーバ側とクライアントに分かれています.フォルダにはyar_が対応していますserver.phpとyar_client.php
yar_client.php
$client = new Yar_Client("http://127.0.0.1/yar_server.php");
echo $client->api('helo word');
yar_server.php
class API {
public function api($parameter, $option = "foo") {
return $parameter;
}
protected function client_can_not_see() {
}
}
$service = new Yar_Server(new API());
$service->handle();