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