NuSOAP与PHPRPC比较(转)

因为看到有人问 Nusoap 和 PHPRPC 的比较,为了让大家能够更清楚地了解 Nusoap 和 PHPRPC 的关系,所以在这里做一个简要的说明性介绍,所写的内容也不是面面俱到的,只写了一些主要的比较。更多细节的比较大家可以在使用中自己来对比。

Nusoap 是一个用于 PHP 的 Web Service 实现。PHP 版本的 PHPRPC 协议实现跟 Nusoap 是一个级别的东西。但是 PHPRPC 协议是跟 Web Service 一个级别的东西,所以下面我们来把 Nusoap 实现跟 PHP 版本的 PHPRPC 协议实现进行比较,把 Web Service 和 PHPRPC 协议进行比较。

第一、协议比较:

相同之处:
这两个协议都是基于 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 层网络模型,实现高效,使用方便。

第二、然后我们再来比较 Nusoap 和 PHP 版本的 PHPRPC协议实现:
相同之处是都用于 PHP。
不同之处主要在于
易用性上,Nusoap 虽然在易用性上做的还算不错,但是跟 PHP 版本的 PHPRPC 协议实现来比较就差太远了。例如,利用 Nusoap
发布的服务函数需要单独编写,而不能使用跟本地函数同样的方式进行编写,更无法使用 PHP 中内置扩展的函数,而 PHPRPC
所发布的函数跟本地函数完全一样,甚至包括 PHP 内置扩展的函数也可以直接发布。要用 Nusoap 发布一个
wsdl,需要为每一个发布的过程的名称、参数名、参数类型、返回值类型、名空间、动作、样式、文档等内容进行定义。而要发布一个 PHPRPC
服务,只需要告诉服务器要发布的那个函数(也可以是对象方法或类方法)的名字(还可以给出别名)即可。而不需要给出参数名、参数类型、返回值类型等信息。
因此对于变长参数,可变类型参数的支持更好。在 PHPRPC 客户端的使用上,也是同样的方便,可以直接以远程函数名命名的本地 PHPRPC
客户端的方法来调用远程函数,而 Nusoap 相对来说比较麻烦一些。PHPRPC
还有一个很大的优势在于,它可以让你很轻松的以安全加密传输的方式来进行远程调用,这一点 Nusoap 是做不到的。

时间: 2024-11-13 17:02:26

NuSOAP与PHPRPC比较(转)的相关文章

phprpc远程调用报错,不知道什么原因

我在学习phprpc远程调用,按照网上的教程,发现报错:Incorrect response id (request id: 1, response id: ) n:好纠结啊,求教.贴出代码如下: 服务端,member.php <?php require_once 'jsonRPCServer.php'; /** User: Administrator Date: 2015/12/28 Time: 11:06 */ class member { public function getName()

JAVA调用NuSoap服务

NuSoap是PHP环境下的WebService编程工具,用于创建或调用WebService,是一个开源软件.它完全采用PHP语言编写.通过HTTP收发SOAP消息的一系列PHP类,由NuSphere Corporation(http://www.nusphere.com/)开发.它的优势是不需要扩展库的支持,这种特性使它可用于所有的PHP环境,不受服务器安全设置的影响. 用到的jar包: jaxrpc.jar commons-discovery-0.2.jar commons-logging-

NuSOAP简介 php中使用webservice

许多机构已经采用了Apach和PHP作为他们的Web应用环境.在Web services模式中采用PHP可能看上去可能会比较难.但是事实上,搭配NuSoap,你可以轻松的应用PHP构建SOAP的客户端和服务器端. PHP SOAP服务器   用PHP和NuSoap来建立SOAP服务器非常容易.基本上,你只要写出你想要暴露给你的Web services的函数,然后用NuSoap去注册它们就可以了.OK,另外还需要两步才能完成PHP SOAP服务器的建立.首先你还要在你的PHP代码中创建NuSoap

php nusoap类的使用、用法、出错 及说明

NuSOAP 是 PHP 环境下的 WEB 服务编程工具,用于创建或调用 WEB 服务它是一个开源软件,当前版本是 0.7.2 ,支 持 SOAP1.1 WSDL1.1 ,可以与其他支持 SOAP1.1 和 WSDL1.1 的系统互操作 NuSOAP 完全由PHP语言编写,由一 系列 PHP 类组成,不需要扩展库的支持,这种特性使得 NuSOAP 可以用于所有的 PHP 环境,不受服务器安全设置的影响 1. NuSOAP 的获取和安装NuSOAP 项目建立在 SourceForge 上,网络地址

使用PHPRPC实现AJAX安全登录

PHPRPC 是一个轻型的.安全的.跨网际的.跨语言的.跨平台的.跨环境的.跨域的.支持复杂对象传输的.支持引用参数传递的.支持内容输出重定向的.支持分级错误处理的.支持会话的.面向服务的高性能远程过程调用协议. PHPRPC 与其它 ajax 框架不同,PHPRPC 遵循的是“只做一件事,并把它做好”的原则.它只负责数据传输,并且将传输做到最好!它将你以前用传统的 ajax 方式做不到或者很难做到的事情变得轻而易举! 相信好多人选择 PHPRPC 的一个主要原因就是它能够让你开发 ajax 应

利用PHPRPC以及SOAP分别实现PHP的Webserver功能

服务端:phprpc服务端 <?php /* phprpc 服务端演示 * time:2014-06-23 */ require_once 'phprpc_server.php';//引入服务端 class test {//生成一个类 public function get($data = 'Java'){ return 'Hello '.$data; } } $handle = new phprpc_server();//实例化服务端 $handle->add('get','test');/

phprpc的简单使用

PHPRPC 是一个轻型的.安全的.跨网际的.跨语言的.跨平台的.跨环境的.跨域的.支持复杂对象传输的.支持引用参数传递的.支持内容输出重定向的.支持分级错误处理的.支持会话的.面向服务的高性能远程过程调用协议. PHPRPC支持多种语言包括,ASP,PHP,JAVA,C++,JAVASCRIPT,PYTHON等.官网:http://phprpc.org/zh_cn/ 有时候访问不了! PHPRPC 分为服务端和客户端 首先按照PHPRPC. 1.下载phprpc for php 的安装安装包解

.net/java调用NuSOAP构建的Web服务

此文主要解决php下的web服务接受和返回复杂类型(自定义类型)该如何构建以及其他程序客户端如何来调用. 第一步:用NuSOAP组件来构建基于php的webservice 下载NuSOAP组件,在创建基于php的webservice时需要引用,代码如下,很简单直观,有注释就不多解释了: <?php require_once ('lib/nusoap.php'); // 返回的是一个数组 function adduser ($userName, $userAge, $birthday, $high

Nusoap复杂对象的的webService制作

推荐网址:http://www.scottnichol.com/nusoapprogwsdl.htm摘抄部分如下:服务器端程序 <?php // Pull in the NuSOAP code require_once('nusoap.php'); // Create the server instance $server = new soap_server(); // Initialize WSDL support $server->configureWSDL('hellowsdl2', '