xmlrpc与jsonrpc

RPC是Remote Procedure Call的缩写,翻译成中文就是远程过程调用,是一种在本地的机器上调用远端机器上的一个过程(方法)的技术,这个过程也被大家称为“分布式计算”,是为了提高各个分立机器的“互操作性”而发明出来的技术。
按照“数据即程序”的观点来看,RPC无非是借助一些通信手段来互相传递数据(信息),所也她也是“高”层次的通信手段,无非是这种通信手段看起来更像是“过程的调用”,因为她往往以一个“函数”的面目示人,从而掩盖了她交换信息的实质。

在各种RPC技术中,我想应该以Sun的RPC最为著名,比较流行的网络文件系统NFS就是建立在SUN RPC技术基础之上的。
XMLRPC, 顾名思义(我总是喜欢这样把问题简单化,因为一个比较好的名字往往能概括出一个东西的本质,如果某个名字让你摸不着头脑,我推荐你放弃它,因为那个发明这 个东西的人都不知道它的实质,所以你也就没有必要在其上浪费无谓的时间和精力。)就是应用了XML技术的RPC。那么什么是XML了?
XML和 RPC一样也是一个东西的缩写,这个东西就是eXtensible Markup Language,中文意思就是可扩展标记语言,标记语言就是那种用尖括号(<>)括来括去的那种语言,比如说HTML。XML的可扩展性也 体现在它只定义了语言的格式,而并没有定义过多的关键字,也就是通常所说的标记(Tag),所以用户可以自由地选择定义标记。它的这种自由和简单的语法规 则也使得它广为流传,被用来表示各种数据。熟悉Lisp语言(一种被称为“一大堆”括号的语言)的同学可能觉得XML和Lisp语言有些类似,不同的是 XML用尖括号替代了Lisp语言中的圆括号(())。事实就是他们都是那么相似,那么多语言似乎都是等价的,不同的只是那些应用语言的人。
XML在XMLRPC充当什么角色呢?
答 案就是“交换的数据格式”。在Sun RPC中,调用双方传递的数据是二进制的,而在XMLRPC中数据将是XML格式的。那么为什么用XML而不用二进制呢?我想一方面应该是为了兼容更多的 语言,因为这个世界上除了C/C++等编译语言,还有很多类似python,perl,javascript等的脚本语言(最近有些文章也称其为“动态语 言”,因为他们通常不需要自己管理内存),另一方面是为了隔离操作系统的差异,比如说Little Endian和Big Endian的差异等。基于种种原因,XMLRPC选择了XML这种中间语言作为其信息的格式,然后由各个语言负责将其转变成各自native(本土)的 数据类型。关于为了兼容各个语言所发明的中间语言还有IDL(Interface Definition Language:接口定义语言),它被用于CORBA接口的定义。
关于XMLRPC的更多信息请到它的官方网站去学习,其中有XMLRPC的规范(Specification),不过是相当得简单的,因为XMLRPC本身就特别的简单,不相信?好,那下面我就请大家和我一起来学习如何写一个加法的XMLRPC。

   xml rpc是使用http协议做为传输协议的rpc机制,使用xml文本的方式传输命令和数据。一个rpc系统,必然包括2个部分:1.rpc client,用来向rpc server调用方法,并接收方法的返回数据;2.rpc server,用于响应rpc client的请求,执行方法,并回送方法执行结果。RPC是Remote Procedure Call的缩写,翻译成中文就是远程过程调用,是一种在本地的机器上调用远端机器上的一个过程(方法)的技术,这个过程也被大家称为“分布式计算”,是为了提高各个分立机器的“互操作性”而发明出来的技术。

简单描述:
rpcclient的工作原理:rpcclient根据URL找到rpcserver -> 构造命令包,调用rpcserver上的某个服务的某个方法 -> 接收到rpcserver的返回,解析响应包,拿出调用的返回结果。
rpcserver的工作原理:启动一个webserver(在使用内置的webserver的情况下) -> 注册每个能提供的服务,每个服务对应一个Handler类 ->进入服务监听状态。
XML-RPC是一种基于Internet的远程函数调用协议。
XML-RPC消息都是HTTP-POST请求。请求的主要部分的XML。服务器端执行后的返回结果同样也是XML格式。
函数调用的参数可以是scalars, numbers, strings, dates等等;也可以是混合型的记录和结构体。
Request请求样式
关于请求头
第一行的URI格式不是特定的。可以为空,如果服务器只处理XML-RPC请求甚至可以只是简单的一个斜线。可是,如果服务器除了XML-RPC外还提供其他的HTTP请求,URI可以帮助我们把请求指向特定的XML-RPC服务。
User-Agent和Host项是必须的。
Content-Type的值必须是text/xml.
Content-Length必须指定,而且必须是正确的值。
有效的格式
XML-RPC具有和XML一样的有效格式,并且是一个结构。
必须包含一个值为字符型的子元素,用来表明被调用的方法。这个字符必须符合以下规定:大小写字母、数字0-9、下划线、点、冒号和斜线。至于怎么解释这个字符串将有服务器端来决定。
Scalar s
值被嵌入类型标签中,支持的类型如下表:
Tag
Type
Example
or
four-byte signed integer
-12
 
0 (false) or 1 (true)
1
 
string
hello world
 
double-precision signed floating point number
-12.214
 
date/time
19980717T14:08:55
 
base64-encoded binary
eW91IGNhbid0IHJlYWQgdGhpcyE=
如果没有指定类型,默认为字符串。
s
参数值可以是。
每个包含若干,每个包含一个和一个.
如果所示为包含两个值的
是可以递归使用的,任何都里还可以或其他任何类型,包括后面将要说明的。
s
值可以个
一个简单的有一个元素。可以是任何合法类型。
下面是一个有4个值的array:
12 Egypt 0 -31
elements do not have names.
元素没有名字。
你可以混合使用上面列出的几种类型。
可以递归使用,其值可以是或其他类型,包括上面说明的。
Response应答样式
下面是一个 XML-RPC请求:
HTTP/1.1 200 OK Connection: close Content-Length: 158 Content-Type: text/xml Date: Fri, 17 Jul 1998 19:55:08 GMT Server: UserLand Frontier/5.1.2-WinNT South Dakota
Respnse应答格式
除非底层操作出现错,否则总是返回200 OK.
Content-Type是text/xml。必须设置Content-Length,并且必须是正确的值。
应到内容是一个简单的XML,可是是包含一个,包含一个,包含一个。
可能含有一个< fault>标签。的值为类型,有两个元素,值为< int>的和值为的。
不能既有又有。
JSONRPC和XMLRPC基本类似,最主要的区别就是底层传递的数据,一个是XML,一个是JSON。JSON的好处不言而喻,比XML轻便多了,减少传输过程中的带宽。

转载于:https://www.cnblogs.com/yanhuaqiang/p/11578334.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/349482.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

6的变换_电源学报 | 2020年第3期:quot;高性能双向直流变换技术及其应用quot;专辑征稿启事...

往期精选&#xff1a;【电源学报•热点论文】贝尔福-蒙贝利亚技术大学(UTBM)高非教授-多物理域质子交换膜燃料电池建模仿真及实验测试专辑主编&#xff1a;张云 研究员(天津大学)吴红飞 教授(南京航空航天大学)专辑刊期&#xff1a; 2020年第3期(2020年5月)专辑介绍双向直流变换…

0基础怎么学python10010基础怎么学python_0基础学python全套python教程

C语言要写1000行代码&#xff0c;Java只需要写100行&#xff0c;而Python可能只要20行&#xff0c;所以Python是一种相当高级的语言&#xff0c;如今是Python的世界&#xff0c;花时间学习Python编程语言将是你对未来最好的投资&#xff0c;这就是要学习python的理由。 如何学习…

.Net Core3 新特性整理

.net core 3实现了.net 标准2.1。 1、生成可执行文件 以前版本需要dotnet run运行项目&#xff0c;.net core 3支持直接生成目标平台的可执行文件。比如windows就是exe了&#xff0c;linux就x了。 2、生成依赖项的副本 以前版本在build时不会把NuGet的工具复制到目标目录&#…

flash大作业一分钟源文件_「百树云课堂」一写作业就像被雷劈,是什么“病”?...

一写作业就闹心&#xff0c;大部分都是因为在培养习惯的时候基础没打好。比如&#xff1a;对时间不敏感、对效率不敏感、专注力低下等等&#xff01;今天咱就系统说下“习惯培养”的重点。1大部分娃写不完作业&#xff0c;最主要的一点就是对时间不敏感。写一个字&#xff0c;喝…

bzoj5147bzoj2121loj6701 字符串游戏

做不出来杂题,到处找题做 看到$loj$上新出了一道题,觉得很神仙不错, 还记得Censoring吗(一个AC自动机的题) 这个题求最优解,数据范围$150$ 题解 数据范围非常小,首先贪心肯定不行,考虑AC自动机上$dp$? 好吧其实是区间$dp$ 一个直接的想法是维护$f[l][r]0/1$表示是否可以清空$l…

7个相同小球4个不同盒子_【计算启蒙】4个游戏陪娃玩懂“数拆分”,加减法都不用愁!...

前几天我们整理了能锻炼孩子“数-量匹配”知识的家庭生活小游戏&#xff1a;7个家庭数-量匹配小游戏&#xff0c;让孩子摆脱“机械数数”&#xff01;​mp.weixin.qq.com所以今天&#xff0c;助教就来分享一些借助实物的“数拆分”小游戏吧&#xff01;已经学会数量对应&#x…

python怎么使用预训练的模型_Keras使用ImageNet上预训练的模型方式

我就废话不多说了&#xff0c;大家还是直接看代码吧&#xff01; import keras import numpy as np from keras.applications import vgg16, inception_v3, resnet50, mobilenet #Load the VGG model vgg_model vgg16.VGG16(weightsimagenet) #Load the Inception_V3 model in…

NOIP模拟测试49·50「养花·折射·画作·施工·蔬菜·联盟」

一套题 养花 题解 分块\主席树 这里我用的是主席树 查询分段$1-(k-1)$找最大的,能向右找就向右找 for(ll nowl1,nowrk-1;nowl<maxx;nowlk,nowrk,nowrmin(nowr,maxx)){if(ansmod-1) break;chose(rt[r],rt[l-1],nowl,nowr,1,maxx);} 复杂度分析,调和级数$√n*log(n)$ 代码 #in…

宏任务和微任务执行顺序_确保任务的执行顺序

宏任务和微任务执行顺序有时有必要对线程池中的任务施加一定的顺序。 JavaSpecialists通讯的第206期提出了一种这样的情况&#xff1a;我们使用NIO从多个连接中读取数据。 我们需要确保来自给定连接的事件按顺序执行&#xff0c;但是不同连接之间的事件可以自由混合。 我想提出…

c语言中aver是什么意思_Linux系统top命令中的io使用率,到底是什么意思?

最近在做连续数据流的缓冲系统&#xff0c;C语言代码实现后&#xff0c;粗略测试了下&#xff0c;功能上应该没有问题。那么&#xff0c;接下来就该测试性能了。输入 top 命令&#xff0c;的确可以看到一系列 cpu 使用率&#xff0c;其中一个值得注意的子项就是 io 使用率了&am…

wireshark捕获选项不能用_wireshark的一些基础用法,欢迎收藏

About WiresharkWireshark是世界上最重要和使用最广泛的网络协议分析器。它让您在微观层次上看到网络上正在发生的事情&#xff0c;并且是许多商业和非营利性企业、政府机构和教育机构事实上(通常也是法律上)的标准。Wireshark的发展得益于全球网络专家的志愿贡献&#xff0c;并…

管理沟通-沟通框架

背景 管理三明治的承托&#xff0c;管理沟通。离开了沟通&#xff0c;所有的工作都将搁浅而无法前进。 常见话题&#xff1a; 向上沟通员工激励团队凝聚力提升向下沟通工作特点 工作职责说明技术开发计算机&#xff0c;编程语言&#xff0c;设计算法&#xff0c;开发功能&#…

t’触发器真值表和状态方程_清写出触发器按逻辑特性的分类;写出T触发器的状态方程。...

下列对配电所的说法有误的一项是()。A&#xff0e;市区10kV公用配电所的供电半径一般不大于300m&#xff0c;在郊区的供成功的基础设施服务的提供者都首先是按照商业化的原则经营的&#xff0c;并至少具有几个基本特点&#xff0c;这些基本特我国幅员辽阔&#xff0c;能源分布不…

NetBeans 9抢先体验

Java 9即将来临&#xff0c;NetBeans 9也即将来临。在本文中&#xff0c;我们将看到NetBeans 9 Early Access为开发人员提供的支持&#xff0c;以帮助他们构建Java 9兼容的应用程序。 Java 9提供了许多&#xff08;大约90种&#xff09; 新功能&#xff0c;包括Modules和JShel…

块裁剪后的矩形边界如何去掉_手持拍摄画面太抖?这节课教你如何快速稳定抖动的画面...

手持相机进行拍摄&#xff0c;画面会有较为明显的抖动&#xff0c;这节课就教大家如何稳定视频画面。素材导入到PR后&#xff0c;为素材添加变形稳定器效果&#xff0c;软件会自动开始分析。当前素材上方会显示在后台分析&#xff0c;这时候我们可以剪辑其他部分&#xff0c;并…

怎么把空字符串去掉_Python知识点字符串转整数需注意

↑↑↑关注后"星标"简说Python人人都可以简单入门Python、爬虫、数据分析简说Python严选 来源&#xff1a;简说Python 作者&#xff1a;老表One old watch, like brief python大家好&#xff0c;我是老表&#xff5e;Python知识点系列&#xff0c;学习了记得点赞、…

tree

随机走,看期望 由于zzn过于sb,考试推出来式子因为统计时间不对没有$AC$(应dfs前统计) zzn实在过于sb,式子和题解完全不一样,所以看题解的可以走了 记录tofa[x]表示当前点走到父亲期望步数 可以直接走到父亲 贡献$\frac{1}{deg[x]}$ 走到儿子再走到父亲$\frac{1}{deg[x]}*(1tofa…

android-x86 镜像iso下载_Windows 10(1909)最新12月更新版MSDN官方简体中文原版ISO镜像下载+激huo工ju...

微软已于11月中旬开始大规模推送Windows 10操作系统的最新版本1909。此次更新官方未放出具体更新日志&#xff0c;但没有太多大功能更新&#xff0c;主要还是“修修补补”为主。现在&#xff0c;为大家带来本次官方最新原版ISO镜像下载&#xff0c;具体内部版本号为18363&#…

32查运行内存的map文件_Spark Shuffle调优之调节map端内存缓冲与reduce端内存占比

本文首先介绍Spark中的两个配置参数: spark.shuffle.file.buffer map端内存缓冲 spark.shuffle.memoryFraction reduce端内存占比很多博客会说上面这两个参数是调节Spark shuffle性能的利器&#xff0c;实际上并不是这样的。以实际的生产经验来说&#xff0c;这两个参数没…

element ui 表单验证为正整数

很多时候都会用表单中输入正整数的情况&#xff0c;在element ui中可以用el-input-number 标签来显示输入框是number类型的&#xff0c;或者type"number"也可以的&#xff0c;但是正整数就需要判断了 可以利用正则来判断 代码如下 <el-form ref"checkData&qu…