從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
浙公網安備 33010602011771號