搜索
系统检测到您的用户名不符合规范:

关于jsonRPC,有没有人感兴趣?

浏览:3509 发布日期:2014年01月16日 分类:技术分享
jsonRPC是一个轻量级的远程过程调用协议,无需像soap那样复杂的配置,也无需像rest那样掌握不熟悉的http协议,用我们最常用的json来实现远程函数调用。
网上有php jsonRPC的例子,但是在TP里使用并不是很方便,而且不支持批量请求。

so.今天下午,我就自己写了个基于TP3.2的扩展,主要实现了:
1.服务端与控制器结合,无需复杂的配置,可直接在现有控制器中介入,基本上服务端只需要两行代码即可。
2.支持一次请求调用多个方法的批量模式,避免了每次调用一个方法都需要一次网络请求。


客户端:<?php
// 本类由系统自动生成,仅供测试用途
namespace Home\Controller;
use Think\Controller;
class IndexController extends Controller {
function indexAction(){
$jsonRpcClient = new \Common\Lib\JsonRpcClient("http://localhost/yiika_tp/index.php/JsonRpc");
$jsonRpcClient->rpcMulti();//开启批量请求模式
$jsonRpcClient->rpcBind($a)->index("1","33");
$jsonRpcClient->rpcBind($b)->bye();
$jsonRpcClient->rpcCommit();//提交请求
if(isset($a['error'])){
echo $a['error'];
}else{
echo $a['result']."<br/>";
}
if(isset($b['error'])){
echo $b['error'];
}else{
echo $b['result'];
}
}
}
服务端:<?php
namespace Home\Controller;
use Think\Controller;
class JsonRpcController extends Controller {
function _initialize(){

$jsonRpcServer = new \Common\Lib\JsonRpcServer($this);//初始化jsonRpc服务端
$jsonRpcServer->run();//启动服务,只相应jsonRpc请求,不影响正常的访问
}
function indexAction($a="",$b=""){
return $a."hello".$b;
}
function byeAction(){
return "good bye";
}
}
输出:1hello33
good bye
有兴趣的同学看看还有什么需要改进的,晚上整理一下就发到扩展区了。
最佳答案
评论() 相关
后面还有条评论,
评论支持使用[code][/code]标签添加代码
您需要登录后才可以评论 登录 | 立即注册
收藏
zstxt1989
积分:6535 等级:LV5
热点推荐
(追記) (追記ここまで)
最新更新

我们

合作

网站

信息

ThinkPHP 是一个免费开源的,快速、简单的面向对象的 轻量级PHP开发框架 ,创立于2006年初,遵循Apache2开源协议发布,是为了敏捷WEB应用开发和简化企业应用开发而诞生的。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。并且拥有众多的原创功能和特性,在社区团队的积极参与下,在易用性、扩展性和性能方面不断优化和改进,已经成长为国内最领先和最具影响力的WEB应用开发框架,众多的典型案例确保可以稳定用于商业以及门户级的开发。

AltStyle によって変換されたページ (->オリジナル) /