从Hello word 学习XML-RPC编程

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

posted @ 2011-12-26 17:26  wxj200589  阅读(1755)  评论(1编辑  收藏  举报