虽然利用这种简单的规范,可以方便地阅读和手工编写消息,但你也许不希望每天都这样做。幸好,几乎每一种主流程序语言都提供了一个免费的XML-RPC实现。后面的小例子使用的是Java,并利用了Apache的XML-RPC包。但在XML-RPC网站,你可找到针对AppleScript、ASP、Delphi、Eiffel、Perl、Python、.NET以及其他许多语言的实现。
以自己习惯的一种语言来实现XML-RPC后,它可从两个方面为你提供帮助:
清单B执行与清单A的XML相同的示范方法调用,但清单A的代码十分冗长,而清单B仅用几行Java代码就达到了相同的目的。当然,Apache的XML-PRC实现在幕后做了大量工作,包括与Java.net类进行交互,以及对XML消息进行解析等。但对于使用这一实现的Java程序员来说,只需发出几个典型的方法调用就可以了。
以上例子关注的是客户端XML-PRC调用,没有讲述创建XML-PRC服务器的问题。正如你预计的那样,服务器会复杂一些,但这种复杂性并不是XML-PRC本身所造成的。是一些标准的网络开销加大了复杂度,比如轮询TCP端口、响应多个请求等等。同样地,第三方的实现为此提供了帮助。
例如,Apache的实现包括它自己的微型Web浏览器。你只需告诉它应侦听的端口,并为它指定一些类的实例(也就是处理程序),以便在它接收到一个请求后使用。收到一个请求后,它会检查<methodName>,然后在你指定的处理程序中查找同名方法。它将消息的<param>映射到你的处理程序方法所期望的Java等价物,再调用你的处理程序方法。后者将响应消息当作一个XML字符串返回,出错则引发一个异常。如引发了一个异常,Apache
Web服务器类会捕捉它,并将一个特殊的<fault>响应发送回客户端。
如果你的项目具有以下特征,就应考虑构建一个XML-RPC Web服务方案:
XML-RPC是一种简单、稳定和易于理解的规范。和其他许多Web服务规范不同,它不会频繁发生变化。另外,它的生命力也是有保障的,因为它惟一依赖的技术就是HTTP和XML,并依赖一些基本的编程构造,比如数组、结构和标量等等。所有这些都不会在短暂的时间里消亡。而且由于和XML-RPC有关的所有东西都是免费的、可立即下载的,所以你很快就能让一个Web服务启动并运行起来。
责任编辑:炒饭
欢迎评论或投稿
用户评论