由于看到有人问 Nusoap 和 PHPRPC 的比较,为了让你们可以更清楚地了解 Nusoap 和 PHPRPC 的关系,因此在这里作一个简要的说明性介绍,所写的内容也不是面面俱到的,只写了一些主要的比较。更多细节的比较你们能够在使用中本身来对比。跨域
Nusoap 是一个用于 PHP 的 Web Service 实现。PHP 版本的 PHPRPC 协议实现跟 Nusoap 是一个级别的东西。可是 PHPRPC 协议是跟 Web Service 一个级别的东西,因此下面咱们来把 Nusoap 实现跟 PHP 版本的 PHPRPC 协议实现进行比较,把 Web Service 和 PHPRPC 协议进行比较。数组
第1、协议比较:浏览器
相同之处:
这两个协议都是基于 HTTP 协议的,均可以使用 POST 方法提交请求。
主要不一样之处:
(1) 请求:WebService 虽然也支持 GET 方式提交请求,可是通常不经常使用,经常使用的方式是利用 POST 方法提交 SOAP 格式的请求。而 PHPRPC 支持 GET 和 POST 两种方式来提交请求,请求格式是最多见的 application/x-www-form-urlencoded 格式,这对于实现一个浏览器客户端来讲更加容易。
(2) 响应:WebService 返回的响应是 SOAP 格式的数据,对于浏览器客户端来讲,只有利用 XMLHttpRequest 才可以对其进行处理,由于 XMLHttpRequest 收到跨域调用的限制,所以 WebService 的浏览器客户端没法作到跨域调用服务。PHPRPC 的响应格式是兼容于 JavaScript 格式的纯文本,所以返回的响应能够直接做为脚本执行,所以实现浏览器客户端能够彻底不依赖于 XMLHttpRequest,利用纯 JavaScript 便可实现一个浏览器客户端,而浏览器容许跨域下载并执行脚本,所以 PHPRPC 的浏览器客户端能够作到跨域调用。
(3) 数据交换格式:WebService 中所使用的 SOAP 格式是基于 XML 语言定义的,XML 语言是纯文本的,由于其中的某些位置能够增长或删除一些空白(空格、制表符、回车或换行)而不影响其所表示的内容,所以其格式能够整理成便于人来阅读的, 但也因为这点的灵活性,对于机器处理来讲效率偏低。而 PHPRPC 的数据交换格式是 PHP 序列化格式,PHP 序列化格式能够算是半纯文本的,由于其数据的表示格式也是采用人类可读的方式表示的,但其中任何位置都不能够插入多于的空白,它对机器的可读性做了很好的 支持,不但提供了有效的分隔符,而且提供了字符串长度、数组元素个数、对象成员个数等信息,因此更有利于机器高速处理。由于协议本质上是机机语言,而不是 计算机程序设计语言,计算机程序设计语言是人机语言,它应该更偏重于人类可读性,而机机语言应该更重视机器可读性。所以能够说 PHP 序列化格式在人类可读性和机器可读性之间作到了很是好的平衡。
(4) 带宽占用:WebService 是重量级的 Web 服务,其数据格式冗长拖沓,占用网络带宽高。PHPRPC 是轻量级的 Web 服务,其数据格式简单紧凑,占用网络带宽低。注意,这里所说到重量级和轻量级是指网络带宽占用,而不是指其提供服务的能力,PHPRPC 所提供的服务能力毫不逊色于 WebService,甚至在不少地方优于 WebService。打个比方说:WebService 就像是 OSI 的 7 层网络模型,看似完美,但实现复杂,使用困难。而 PHPRPC 则像是简化了的 TCP/IP 的 5 层网络模型,实现高效,使用方便。安全
第2、而后咱们再来比较 Nusoap 和 PHP 版本的 PHPRPC协议实现:
相同之处是都用于 PHP。
不一样之处主要在于 易用性上,Nusoap 虽然在易用性上作的还算不错,可是跟 PHP 版本的 PHPRPC 协议实现来比较就差太远了。例如,利用 Nusoap 发布的服务函数须要单独编写,而不能使用跟本地函数一样的方式进行编写,更没法使用 PHP 中内置扩展的函数,而 PHPRPC 所发布的函数跟本地函数彻底同样,甚至包括 PHP 内置扩展的函数也能够直接发布。要用 Nusoap 发布一个 wsdl,须要为每个发布的过程的名称、参数名、参数类型、返回值类型、名空间、动做、样式、文档等内容进行定义。而要发布一个 PHPRPC 服务,只须要告诉服务器要发布的那个函数(也能够是对象方法或类方法)的名字(还能够给出别名)便可。而不须要给出参数名、参数类型、返回值类型等信息。 所以对于变长参数,可变类型参数的支持更好。在 PHPRPC 客户端的使用上,也是一样的方便,能够直接以远程函数名命名的本地 PHPRPC 客户端的方法来调用远程函数,而 Nusoap 相对来讲比较麻烦一些。PHPRPC 还有一个很大的优点在于,它可让你很轻松的以安全加密传输的方式来进行远程调用,这一点 Nusoap 是作不到的。服务器