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 ...
随机推荐
- Eclipse中mybatis的xml文件没有提示,出现the file cannot be validated as the XML definition.....
1.下载dtd文件 2.在eclipse中配置本地dtd文件: Window->Preferences->XML->XML Catalog->User Specified En ...
- 禁用thinkpad触摸板的方法
控制面板----硬件和声音----设备和打印机----鼠标----ThinkPad------开启触摸板(前面的勾勾去掉)
- Problem Statement
题目链接:https://vjudge.net/contest/239445#problem/E E - Problem Statement You are given nn strings ...
- vs2017 运行所选代码生成器时出错
[转]https://blog.csdn.net/sunshineyang1205/article/details/80211313 ASPNET MVC Core中像Controller中添加控制器 ...
- Primefaces dataTable设置某个cell的样式问题
设置primefaces dataTable的源网段列的Cell可以编辑,当回车键保存时,判断是否输入的网段合法,如果不合法就显示警告信息,并将这个不合法的数据用红色表示.问题是,怎么给这一个cell ...
- Day3上
T1 星空[问题描述]你是能看到第一题的friends 呢.——hja点点星空是一张
- asp.net MVC 4.0 Model元数据回顾——HtmlHelper的ModelMetadata
模板方法包括Display/DisplayFor.Editor/EditorFor.DisplayForModel/EditForModel提供辅助生成Html的模型元数据信息 public stat ...
- Java语言程序设计(第三版)第二章课后习题答案(仅供参考)
2.1 注意不同类型转换 import java.util.Scanner; public class Ch02 { public static void main(String[] args) ...
- 符号替换问题:请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
public class Solution { public String replaceSpace(StringBuffer str) { String str1=str.toString(); c ...
- vue安装及环境搭建
vue项目在pycharm里运行需要安装一个插件,打开settings,找到plugins,里面搜索vue.js,点击安装. vue安装 先安装node.js npm install -g @vue/ ...