hprose 1.0(rpc 框架) - 内部数据标准
hprose 1.0 内部数据标准
方法的描述 {
// 请求调用格式
'C'.writeString('method1').'a'.count($params).'{'.'m'.count($params)'{'. xxx .'}'.'}'.'z'
// 请求返回格式
'R'.serialize($result).'z'
}
// 数据类型的描述
serialize == {
null == {
writeNull() ---> 'n'
}
is_scalar == {
writeNaN() ---> 'N'
writeInteger(10) ---> 'i10;'
writeLong(2000) ---> 'l2000;'
writeBoolean(true) ---> 't' 或者 'f'
writeDouble(3.6) ---> 'd000;'
writeDouble(正无穷大、负无穷大) ---> 'I+' 或者 'I-'
writeEmpty() ---> 'e'
writeUTF8Char($val) ---> 'u'.''
writeStringWithRef($val) ---> writeString($val)
writeBytes($bytes) ---> 'b'.strlen($bytes).'"'.$bytes.'"'
writeBytesWithRef($val) ---> writeBytes($bytes);
writeString($str) ---> 's'.(strlen(iconv('UTF-8', 'UTF-16LE', $str)) >> 1).'"'.$str.'"'
}
is_array == {
writeArray($array) ---> 'a'.count($array)'{'. xxx .'}'
writeAssocArray($map) ---> 'm'.count($map)'{'. xxx .'}'
}
is_object == {
writeDateTime($datetime) ---> $datetime->format('\DYmd\THis.u\Z')
writeMapWithRef($val) ---> writeMap($val) ---> 'm'.count($val)'{'. xxx .'}'
writeListWithRef($val) ---> writeList($val) ---> 'a'.count($val)'{'. xxx .'}'
writeStdClassWithRef($val) ---> writeStdClass($obj) ---> 'm'.count($val)'{'. xxx .'}'
writeObjectWithRef($val) ---> writeObject($obj) ---> {
$class = get_class($obj); // 'Dir1\Dir2\Clazz1';
$alias = 'Dir1_Dir2_Clazz1'
---> 'c'.(strlen(iconv('UTF-8', 'UTF-16LE', $alias)) >> 1).'"'.$alias.'"'.count($props).'{'.writeString(strtolower($prop[0]) . substr($prop, 1)).'}'.'o'.'0'.'{'.$prop->getValue($obj).'}'
}
}
}
hprose 1.0(rpc 框架) - 内部数据标准的更多相关文章
- RPC框架实现
转载RPC框架实现 RPC(Remote Procedure Call,远程过程调用)框架是分布式服务的基石,实现RPC框架需要考虑方方面面.其对业务隐藏了底层通信过程(TCP/UDP.打包/解包.序 ...
- Spark RPC框架源码分析(二)RPC运行时序
前情提要: Spark RPC框架源码分析(一)简述 一. Spark RPC概述 上一篇我们已经说明了Spark RPC框架的一个简单例子,Spark RPC相关的两个编程模型,Actor模型和Re ...
- 智能 RPC框架 (C++)
RPC中文叫远程函数调用,它是一种通信方式,只是看起来像普通的函数调用. 它包括三个基本要素: 1:服务端注册相应的(服务)函数(用于调用方调用) 2:调用方通过函数调用的方式将一些信息和参数打包到消 ...
- NetCore平台下使用RPC框架Hprose
NetCore下使用RPC框架Hprose https://www.jianshu.com/p/c903fca44d5d Hprose是国内非常优秀的RPC框架,和其它RPC框架比较起来,其它框架一般 ...
- Spark2.1.0——内置RPC框架详解
Spark2.1.0——内置RPC框架详解 在Spark中很多地方都涉及网络通信,比如Spark各个组件间的消息互通.用户文件与Jar包的上传.节点间的Shuffle过程.Block数据的复制与备份等 ...
- .NET 跨平台RPC框架DotNettyRPC Web后台快速开发框架(.NET Core) EasyWcf------无需配置,无需引用,动态绑定,轻松使用 C# .NET 0配置使用Wcf(半成品) C# .NET Socket 简单实用框架 C# .NET 0命令行安装Windows服务程序
.NET 跨平台RPC框架DotNettyRPC DotNettyRPC 1.简介 DotNettyRPC是一个基于DotNetty的跨平台RPC框架,支持.NET45以及.NET Standar ...
- Apache thrift - 使用,内部实现及构建一个可扩展的RPC框架
本文首先介绍了什么是Apache Thrift,接着介绍了Thrift的安装部署及如何利用Thrift来实现一个简单的RPC应用,并简单的探究了一下Thrift的内部实现原理,最后给出一个基于Thri ...
- 高并发架构系列:如何从0到1设计一个类Dubbo的RPC框架
在过去持续分享的几十期阿里Java面试题中,几乎每次都会问到Dubbo相关问题,比如:“如何从0到1设计一个Dubbo的RPC框架”,这个问题主要考察以下几个方面: 你对RPC框架的底层原理掌握程度. ...
- RPC框架从0到10
RPC(Remote Procedure Call) 从单机走向分布式,产生了很多分布式的通信方式 最古老也是最有效,并且永不过时的,TCP/UDP的二进制传输,事实上所有的通信方式归根结底都是TCP ...
随机推荐
- leetcode--Learn one iterative inorder traversal, apply it to multiple tree questions (Java Solution)
will show you all how to tackle various tree questions using iterative inorder traversal. First one ...
- 双层列表 datagrid里属性
frozenColumns: [ [{ title: "姓名"}] ], columns: [ [{"title":"延时原因"}], [{ ...
- js里的数组push用法及append()
result.result[0].name var arr = new Array();$.each(result.result, function(i, item) { arr ...
- 工作经验(C++篇)
这篇总结是我正式参加工作后,和同事交流学习得出来的,希望对其他人有帮助,也是自己的脚印 C++编程中,常会使用到类,组长给我们的经验是,一个类写在一个文件中,不要多各类写在一个文件 为了跨平台性,一个 ...
- iOS开发之数据存取
http://www.cocoachina.com/ios/20141111/10190.html
- Swift基础学习笔记
1.在学基本语法之前,简单看一下与OC的不同 注释:OC #pragma marks 视图加载完成 Swift //MARK: 视图加载完成 //TOOO:设置背景颜色(Xco ...
- 2 cmd中startup显示运行不了显示“不是内部或外部命令”
解决方案: 1 在C:\Windows\System32中检查cmd.exe是否存在(如果存在的话)(检查cmd.exe是否被误删) 2 在我的电脑——属性——环境变量——在系统变量找到Path编辑前 ...
- 学习笔记:《JavaScript高级程序设计》
第1章 JavaScript简介 1.一个完整的JavaScript实现应该由三部分组成:核心(ECMAScript),文档对象模型(DOM)和浏览器对象模型(BOM). 2.Web浏览器只是ECMA ...
- $.ajax防止多次点击重复提交的方法
第一种:使用$.ajaxPrefilter( [dataTypes], handler(options, originalOptions, jqXHR) ) 方法:$.ajaxPrefilter()方 ...
- Unity3d 游戏中集成Firebase 统计和Admob广告最新中文教程
之前写过俩相关的教程,最近发现插件官方更新了不少内容,所以也更新一篇Firebase Admob Unity3d插件的教程,希望能帮到大家. Firebase Admob Unity3d插件是一个Un ...