workerman-json-rpc:使用workerman快速进行RPC开发的套路

之前我们已经简单的了解了一下『远程调用PRC』
1.Socket学习 - 撕开远程调用的逼格外衣(上)
2.Socket学习 - 撕开远程调用的逼格外衣(下)超简易仿制一个RPC客户端
workerman-json-rpc:使用workerman快速进行RPC开发的套路_第1张图片

二、

今天来学习一下workerman这个框架上的其他应用『Json Rpc远程调用框架』,
下载地址:http://www.workerman.net/workerman-jsonrpc
介绍:

JSON (JavaScript Object Notation)是一种用于在组件间交互信息的数据交换格式,其是以JavaScript 为基础的数据表示语言。既方便于人的读写习惯,又有利于计算机的解析和生成。
RPC(Remote Procedure Call)是远程调用,既客户端通过某种协议向服务器发起请求并获得结果。RPC使得开发分布式网络程序非常方便,并且能极大限度的将网络系统的各个部分解耦,方便后续开发、维护。
workerman-json-rpc是一个以workerman作为服务器容器,使用Json作为协议简单高效的RPC远程调用框架。

workerman-json-rpc:使用workerman快速进行RPC开发的套路_第2张图片
下载解压之后目录结构如下图,我们把JsonRpcStatistics 这2个目录的全部拷贝到 我们自己的项目中。
workerman-json-rpc:使用workerman快速进行RPC开发的套路_第3张图片
拷贝到jsonrpc 文件夹中,workerman 目录还是我们最原始是workerman核心包。

1.新建allserver.php 来作为我们的服务端:



//引入Workerman核心包
require_once 'workerman/Autoloader.php';
//引入jsonRpc
require_once 'jsonrpc/JsonRpc/start.php';

启动:

php allserver.php  start

workerman-json-rpc:使用workerman快速进行RPC开发的套路_第4张图片

2.客户端
我们在另外一个网站(客户端)来调用我们服务端。
因为我们服务端使用的是『workerman-json-rpc』这个插件,其中也封装了客户端的代码。
我们把JsonRpc/Clients/PrcClient.php文件拷贝到我们的客户端项目,然后新建一个test.php文件来测试
workerman-json-rpc:使用workerman快速进行RPC开发的套路_第5张图片
test.php:

php

require_once 'RpcClient.php';

 // 服务端列表
$address_array = array(
    'tcp://10.211.55.13:2015', //我们只有一个服务
);
// 配置服务端列表
RpcClient::config($address_array);

$uid = 567;
$user_client = RpcClient::instance('User'); 
//这个User是服务端的类,在JsonRpc/Services/User.php

//调用User类中的方法
var_dump($user_client->getEmail(123));

workerman-json-rpc:使用workerman快速进行RPC开发的套路_第6张图片

3.回到服务端,新建新闻服务News.php
workerman-json-rpc:使用workerman快速进行RPC开发的套路_第7张图片
可以看到,默认有Blog类和User类(前面我们已经在客户端调用过)。

在服务端新建了一个News 服务后,不需要重启服务(不需要再次执行 php allserver.php start)。

来到客户端测试:

php

require_once 'RpcClient.php';

 // 服务端列表
$address_array = array(
    'tcp://10.211.55.13:2015', //我们只有一个服务
);
// 配置服务端列表
RpcClient::config($address_array);

//客户端调用新闻服务
$client = RpcClient::instance('News');
var_dump($client->getTodayNews());

workerman-json-rpc:使用workerman快速进行RPC开发的套路_第8张图片

你可能感兴趣的:(PHP)