作者:工农大路店NOKIA客户服务中心 | 来源:互联网 | 2014-05-05 09:01
响应也是简略的XML文件,拥有根元素,或者有或者没有子元素。这与复杂的SOAP相应对照鲜明。本来的XML-RPC协议是由Web先锋DaveWiner于1998年在UserLandSoftware公司发明的。其第一个实现是在
响应也是简略的XML文件,拥有根元素,或者有或者没有子元素。这与复杂的SOAP相应对照鲜明。
本来的XML-RPC协议是由Web先锋Dave Winer于1998年在UserLand Software公司发明的。其第一个实现是在UserLand Frontier开发平台上(事实上,UserLand Software的商标就是"XML-RPC")。“在HTTP之上传输XML文本”方法的自然用处就是创立SOAP,这其中有Winer, Don Box以及其他微软公司人士的贡献。但是,SOAP由于很多对利用完整不必要得特征而变得非常重量级,所以XML-RPC还是值得留心的。
本来的XML-RPC只应用一些数据类型,并不需要名字空间。通过定义和包含其它值的类型,它获得了相当可观的机动性。下面是一个XML-RPC阐明书中的例子。它指定了示例利用程序中"getStateName"方法的输进参数。
以下为引用的内容:
examples.getStateName
41
你可能已经猜到这个标签表现4字节整数,下面是用于在标签中指定如何翻译内容的所有类型标签。假如没有应用任何标签,就认为是String值。留心,参数并没有被命名,元素的次序只和方法参数的次序一样。
以下为引用的内容:
Java Type XML tag Description
Integer or A 32 bit signed integer
Double A double precision (64bit) signed floating point number
Boolean 0 (false) or 1 (true)
String string
Date or A timestamp in the ISO8601 style but simplified
Calendar with resolution to the second.
byte[] A base-64 encoded array of bytes
Map Pair(s) of tags where the name is a string and
the value can be any other type, including
Object[] An array of objects where the elements can be any other type.
在原始的阐明书中,没有措施指明任何类型的“null”值,但扩大版本答应附加类型。
响应也是简略的XML文件,拥有根元素,或者有或者没有子元素。这与复杂的SOAP相应对照鲜明。
XML-RPC实现
xmlrpc.com上列出的实现给出了通往79个不同实现的链接,它们在各种语言中实现了基础的XML-RPC协议,包含5个2003年12月用Java语言实现的。但是,这些项目中很多都是停止的。而由Apache Web Services Project主持的项目则是活泼的。我尝试运行当前的3.0a1版本,却发明它对其它Web服务项目库有希奇的依附。看起来似乎Apache Web Services Project在开发3版本,所以假如你对开源XML-RPC解决计划感爱好,不妨对它多关注。
JAX-RPC: 针对XML RPC的Java API
最早的Java API要从JSR 101开端算起。这项工作从2001年初开端,到2002年年中达到1.0版本。2003年,宣布了1.1版本并附带在Java Web Services Developer Pack由Sun的参考实现。在JAX-RPC中,Java原始类型的定义与XML schema类型紧密相干。它还支撑更多的Java尺度库对象,例如,BigInteger 和 BigDecimal,以及符合JavaBeans尺度的对象。应用JSR 101的人可以并行开发SOAP和其它XML技巧。
Java Web Services Developer Pack (JWSDP)1.6版包含很多其它东西以及对JAX-RPC 1.1.3的一个实现。
JAX-WS 2.0:下一个JAX-RPC
该阐明书的下一个版本叫做JAX-WS 2.0,是针对基于XML的Web服务,用来代替JAX-RPC的Java API。该尺度被作为Java Specification Request (JSR) 224来开发,现在处于最后草案阶段。
JAX-RPC的下一个版本将明显下降Web服务开发的复杂性,部分通过应用Java 1.5尺度库的特征来实现。你可以跟踪网站上源码列表中的参考实现。至于本文,已经可以拜访第3版的参考实现。
应用JWSDP 1.6
JWSDP 1.6一个有用的功效就是对Web Services Description Language (WSDL)的支撑。假定有一个描写Web服务的WSDL文档,那么就可以主动天生拜访服务的客户端代码和支撑服务的服务器端代码。为了用一个简略的接口用来相应客户对已宣布的Web服务的恳求,我在JWSDP 1.6中用wscompile工具创立客户真个类,它们可以基于三四个输进参数来描写可能的动作。成果,几秒钟内就能创立惊人的32个类。
一旦我指出这些类中的哪些供给真正的创立恳求的起始点,那么编写代码实现简略的命令行接口就很简略了。而当我想运行程序时,标题随之而来。客户端需要从JWSDP中添加10个jar包到他自己的Java程序中。
由于不能帮大家一个一个调试这些jar包与其它Java程序的埋伏冲突,我放弃这种做法,转而用string模板写一个简略的程序来创立SOAP恳求和XPath来翻译返回的成果。就像其名字一样,我认为JWSDP将重要用于创立Web服务,而不是花费Web服务。
XML-RPC还有用吗?
JAX-RPC的复杂性导致程序员的某种倒退。从Google中搜索"JAX-RPC complexity"就能看到一些用户的反应。我想你应当在以下情况考虑XML-RPC而不是JAX-RPC:
你的利用程序只需相对简略的恳求
你能把持服务器端和客户端,你不需要宣布WSDL
你想简略的解析客户端(就像AJAX利用程序)