`
dawnyu
  • 浏览: 1715 次
文章分类
社区版块
存档分类
最新评论

xmlrpc是什么 xmlrpc工作原理以及使用

阅读更多
1.xml rpc是什么
1.1. xml rpc简介
xml rpc是使用http协议做为传输协议的rpc机制,使用xml文本的方式传输命令和数据。
一个rpc系统,必然包括2个部分:1.rpc client,用来向rpc server调用方法,并接收方法的返回数据;2.rpc server,用于响应rpc client的请求,执行方法,并回送方法执行结果。
1.2. xml rpc的可用版本
xml rpc client和xml rpc server都有很多版本的实现。一般而言,一个实现版本都会同时实现client/server。但由于都满足xml rpc规范,从理论上讲,任何一个版本的rpc client实现与任何一个版本的rpc server都能配套使用。
更进一步,由于xml rpc以xml文本的方式,使用http协议传输,所以与编程语言无关。例如:rpc client的已实现版本包括了:perl,php,python,c/c++,java,等等;rpc server的实现语言包括perl,java,等。
同一种编程语言所实现的版本也不止一个。例如java版的实现有:Marque的xmlrpc实现(http://xmlrpc.sourceforge.net/),apache的xmlrpc 实现(http://ws.apache.org/xmlrpc/)

1.3.xmlrpc的工作原理
完整的需要参考xmlrpc规范(http://www.xmlrpc.com/spec)
简单描述:
rpcclient的工作原理:rpcclient根据URL找到rpcserver -> 构造命令包,调用rpcserver上的某个服务的某个方法 -> 接收到rpcserver的返回,解析响应包,拿出调用的返回结果。
rpcserver的工作原理:启动一个webserver(在使用内置的webserver的情况下) -> 注册每个能提供的服务,每个服务对应一个Handler类 ->进入服务监听状态。
1.4. xmlrpc规范
区区6页,讲的非常清楚,建议细看。http://www.xmlrpc.com/spec

2.在java中使用xml rpc的几个例子
2.0.环境准备:下载如下包并设置到CLASSPATH中
apache xmlrpc软件包(http://ws.apache.org/xmlrpc/)
commons-httpclient-3.0-rc4.jar
commons-codec-1.3.jar
2.1.使用apache的java xmlrpc实现版本,实现简单的加/减服务。参考附录中test.XmlRPCClient类与test.JavaServer类
2.2.使用apache的java xmlrpc实现版本,测试java的数据类型与xmlrpc数据类型的相互对应关系。参考附录中test2.XmlRPCClient类与test2.JavaServer类。
在这里简单描述一下:
>xmlrpc中的Array类型,对应到java中的Vector类型
例如:在RPC Server中的某个服务方法的返回值的声明类型是String[],但在Client中接收到的将是Vector对象;
反之,如果Client传送过去的调用参数为String[],但在RPC Server中所接收到的将是Vector对象
当然,如果我们不使用String[],直接声明为Vector,也是可以的。
>xmlrpc中的struct类型,对应到java中的Hashtable类型
>其它的类型,如:String,int,double,boolean,Date等,都比较好对应。需要注意的是:在rpc Client中,如果使用到int/double/boolean这些基本类型时,需要将他们封装成一个相应的Object,例如:Integer/Double/Boolean。

2.3.使用apache的java xmlrpc实现版本,实现自定义类型的数据的传输
这个sample中,假设所传输的object都实现了XmlRPCSerializable接口。这个例子的目的是:模拟unionmon中的command对象。当假设所传输的数据是一个Object[]时,可以用这种方式传输。结合unionmon中的代码生成机制,每个vo的序列化/反序列化方法可以在代码生成过程中完成。同样地,vox的序列化/反序列化方法需要手写。
参考代码:附录中的test3.XmlRPCSerializable , test3.AccountVO , test3.XmlRPCClient , test3.JavaServer

2.4.不启动内置的WebServer,让tomcat支持rpc server。
做法:1.实现一个Servlet,并配置到tomcat中;2.让rpc client直接找这个servlet,获得服务。
注意rpc client使用的是http post方法,所以该servlet中只需要实现doPost方法。

过程:在tomcat中的web.xml增加如下配置:
<servlet>
     <servlet-name>SampleServiceServlet</servlet-name>
     <servlet-class>test4.ServletXmlRPCServer</servlet-class>
</servlet>
<servlet-mapping>
     <servlet-name>SampleServiceServlet</servlet-name>
     <url-pattern>/SampleServiceServlet</url-pattern>
</servlet-mapping>

参考类:附件中的test4.SampleService,test4.ServletXmlRPCServer,test4.XmlRPCClient

3.todolist
3.1.能否通过introspect方式,使得自定义类型的vo的序列化/反序列化工作自动完成.castor可以完成对象的xml binding,似乎可参考
3.2.soap协议比xmlrpc复杂并强大。soap不熟悉。另,soap一定与web service在一起用?能否不用web service,但使用soap做rmi的协议。

分享到:
评论

相关推荐

    xmlrpc-2.0-src.zip_xmlrpc_xmlrpc java_xmlrpc s_xmlrpc-2.0.1.jar_

    开发者可以通过源代码了解其实现原理,也可以直接使用JAR文件快速在项目中集成XMLRPC功能。在实际应用中,开发者可以创建XMLRPC服务器,暴露接口给客户端调用,或者编写客户端代码来调用远程服务器的方法,实现跨...

    基于python的xmlrpc示例

    1. XMLRPC的基本原理和消息格式:了解如何将函数调用和参数编码为XML,以及如何解码服务器返回的结果。 2. Python的`xmlrpc.server`和`xmlrpc.client`模块:熟悉这两个模块提供的类和方法,如`SimpleXMLRPCServer`和...

    XMLRPC jar包+教程+例子

    学习并掌握XMLRPC可以帮助你理解分布式系统中的远程调用原理,对于开发跨平台的协作应用程序非常有帮助。然而,随着技术的发展,现今更多地推荐使用基于HTTP/2的gRPC或是基于JSON的RESTful API,它们在性能和易用性...

    xmlrpc类库

    XMLRPC库的核心原理是通过XML编码参数和返回值,利用HTTP作为传输协议,实现了类似本地函数调用的效果。在XMLRPC库中,主要包含以下几个关键组件: 1. **客户端**:客户端是发起请求的一方,它负责创建XML数据结构...

    xmlrpc简单示例

    下面将详细阐述XMLRPC的基本原理、工作流程及其在实际应用中的价值。 XMLRPC的核心思想是使用HTTP作为传输协议,XML作为数据交换格式,实现客户端和服务器之间的通信。这种设计使得XMLRPC具有跨平台、跨语言的特性...

    xmlrpc demo

    理解XMLRPC的工作原理和如何在Python中使用它,对于进行分布式系统开发或者需要跨网络调用远程函数的场景非常有用。这个"xmlrpc demo"项目可以帮助初学者快速上手,通过实践了解XMLRPC的完整流程。通过运行和调试这...

    XMLRPC调用webservice

    首先,让我们了解一下XMLRPC的工作原理。XMLRPC的基本流程包括以下步骤: 1. 客户端发起请求:客户端通过HTTP POST方法发送一个XML格式的消息到服务器。 2. XML消息构造:XML消息包含了要调用的方法名和参数列表。 3...

    xmlrpc实现php和后台c++的通信

    不过,如果你想要更底层的控制或优化,理解Socket编程可以帮助你更好地理解XMLRPC的工作原理。 总的来说,通过XMLRPC,PHP和C++可以轻松地进行跨语言通信,实现了不同技术栈之间的无缝集成。这种通信方式简化了开发...

    apache xmlrpc jar src

    这个源代码包包含了项目的所有源文件,开发者可以查看和修改这些源代码,了解XML-RPC的工作原理,或者根据需要定制和扩展功能。源代码包通常用于调试、学习、性能优化或定制开发。 `apache-xmlrpc-3.1.3-bin.zip`则...

    Ub.XMLRPC.rar_xmlrpc

    XMLRPC(XML Remote Procedure Call)是一...这些代码可以帮助我们理解XMLRPC的工作原理,以及如何在C#中进行实现。通过分析和学习这些代码,我们可以掌握如何在自己的项目中运用XMLRPC进行跨平台、跨语言的接口开发。

    php XmlRPC 官方文档

    本篇文档将详细介绍 PHP XML-RPC 的基本概念、安装配置方法以及具体使用细节,帮助开发者更好地理解和使用该库。 #### 二、版本说明与更新历史 - **版本号**: 2.2.2 - **作者**: Edd Dumbill, Gaetano Giunta, ...

    apache-xmlrpc-3.1.3-src.zip

    在这个版本中,你可以深入理解XML-RPC的内部工作原理,以及如何在Java应用中集成和使用它。 XML-RPC的核心概念是通过网络传输结构化的数据,即XML格式的数据,来调用远程服务器上的方法。它提供了一种轻量级的跨...

    apache xmlrpc-3.1.1-sources.zip

    通过分析这些源代码,开发者可以深入理解XML-RPC的工作原理,定制自己的XML-RPC服务器和客户端,或者对现有的实现进行优化。此外,这些源码也可以帮助开发者学习如何使用Java处理网络通信和XML解析,提升自己的编程...

    Java xmlrpc远程方法调用(源码)

    下面我们将详细探讨Java XML-RPC的工作原理、实现步骤以及如何利用提供的源码来创建和调用远程方法。 1. **XML-RPC协议基础**: - XML-RPC基于XML标准,通过HTTP作为传输协议,允许客户端向服务器发送一个方法调用...

    Ajax实现xmlrpc消息的例子

    在这个“Ajax实现xmlrpc消息的例子”中,我们将探讨如何使用Ajax来调用XML-RPC服务,并传递及接收数据。首先,理解XML-RPC的基本原理是至关重要的。XML-RPC使用XML格式封装方法名和参数,然后通过HTTP发送到服务器,...

    apache-xmlrpc

    1. **XML-RPC协议**:理解XML-RPC的基本原理,包括如何通过XML格式封装方法名、参数和返回值,以及如何解析这些XML消息。 2. **服务器端实现**:创建XML-RPC服务器,定义可被远程调用的方法,并使用Apache XML-RPC...

    xmlrpcPP.zip_xmlrpc_zip

    6. **源代码**:src目录包含了XMLRPC++的所有源代码,开发者可以通过阅读和分析源代码来深入理解XML-RPC的工作原理和XMLRPC++库的设计思路。 在实际开发中,XMLRPC++可用于构建各种跨平台的分布式应用程序,如Web...

    xmlRpc的完整例子

    在本文中,我们将深入探讨XML-RPC的工作原理,以及如何创建一个完整的XML-RPC服务器和客户端示例。 1. **XML-RPC的基本概念** - **远程过程调用(RPC)**:RPC允许程序在不同的计算机之间执行远程的函数或方法,就...

    apache-xmlrpc-3.1.2-src

    无论你是要创建自己的RPC服务,还是需要理解RPC工作原理,这个开源项目都是极好的学习资源。通过阅读源码,你不仅可以掌握XML-RPC的实现细节,还能学习到如何设计和实现跨平台的网络通信解决方案。

    XMLRPC .net接口

    XMLRPC(XML Remote Procedure Call)是一种基于HTTP协议的远程过程调用(RPC)技术,它使用XML作为...开发者可以通过理解XMLRPC的工作原理和使用XMLRPC.NET接口提供的API,构建能够与任何支持XMLRPC的系统交互的应用。

Global site tag (gtag.js) - Google Analytics