xml rpc学习目录:
1 定义
2 使用场景
3 案例分析
4 安全
5 总结
6 资源
一 定义
xml rpc是使用http协议做为传输协议的rpc机制,使用xml文本的方式传输命令和数据。一个rpc系统,必然包括2个部分:1.rpc client,用来向rpc server调用方法,并接收方法的返回数据;2.rpc server,用于响应rpc client的请求,执行方法,并回送方法执行结果。RPC是Remote Procedure Call的缩写,翻译成中文就是远程过程调用,是一种在本地的机器上调用远端机器上的一个过程(方法)的技术,这个过程也被大家称为“分布式计算”,是为了提高各个分立机器的“互操作性”而发明出来的技术。(摘自百度百科)
二 使用场景
2.1 需要使用远程服务,对soap等其他远程服务协议不是很熟悉
2.2 需要客户端能访问远程信息
三 案例分析
本案例使用ASP.NET实现服务端,控制台应用程序实现客户端。实现内容:调用RPC服务,输出hello word!
3.1 服务端
下载xml-RPC.net,程序集中引用CookComputing.XmlRpcV2.dll,新建一个服务之前,先新建一个接口,代码如下:
/// <summary> /// 我的测试接口 /// </summary> public interface IDiyiyusuanTest { [XmlRpcMethod("HelloWord")] string HelloWord(); }
实现这个接口,并且继承XmlRpcService,代码如下:
/// <summary> /// 创建一个RPC服务 /// </summary> public class RpcServer : XmlRpcService, IDiyiyusuanTest { public string HelloWord() { return "HelloWord!"; } }
要实现Http://www.domin.com/rpcserver.axd,需要在config中如下配置:
<httpHandlers> <add verb="*" type="MvcTest.XMLRPC.RpcServer" path="rpcServer.axd"/> </httpHandlers>解释:type是命名空间和类的名称,path为url访问路径:网站根目录/rpcserver.axd
3.2 客户端
using System.Reflection; using CookComputing.XmlRpc; class Program { static void Main(string[] args) { RpcClient rc = new RpcClient(); var hello = rc.HelloWord(); Console.WriteLine(hello); Console.Read(); } } [XmlRpcUrl("http://yourdmoin.com/rpcServer.axd")] public class RpcClient:XmlRpcClientProtocol { [XmlRpcMethod("HelloWord")] public string HelloWord() { return (string)Invoke(MethodBase.GetCurrentMethod()); } }
4 安全
4.1 简单安全,在实现服务的方法中,加入用户名和密码,但是此处传播为明文传播,最好加密.
4.2 使用强文件加密(暂时没研究)
5 总结
rpc实现比webservice要简单一些,没有复杂的配置,并且各个语言版本都有支持,不需要针对单个语言再写新的代码。但是rpc没有soap的webservice安全性高(暂时这样理解).
6 资源
xml-rpc 一些常见问题:http://xml-rpc.net/faq/xmlrpcnetfaq-2-5-0.html
xml-rpc :xml-rpc.net