kilxy

kilxy

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  15 随笔 :: 0 文章 :: 86 评论 :: 6 引用

今天上园子发现园子已经支持Office2007WebBlog功能,于是看了一下使用的是XML-RPC技术。打开dudu XML-RPCPRCAPI http://dudu.cnblogs.com/services/metaweblog.aspx )感觉就像是WebService,但是深入看看原来不是,这是才注意到原来XML-PRC在起作用。XML-RPC是什么东东(不要笑我孤陋寡闻),幸好有google才知道XML-RPC原来是这个样子:

What’s XML-RPC

It's a spec and a set of implementations that allow software running on disparate operating systems, running in different environments to make procedure calls over the Internet.

It's remote procedure calling using HTTP as the transport and XML as the encoding. XML-RPC is designed to be as simple as possible, while allowing complex data structures to be transmitted, processed and returned.

简单的说就是使用了HTTP作为传输协议、XML作为数据内容实现了远程方法调用的一个标准(和WebService非常象)。具体可以参见XML-PRC的标准 http://www.xmlrpc.com/ 在这里我就不多说了。

既然是标准那就一定会有人实现了,到 http://sourceforge.net/ 找了一下果然如此,但是遗憾的是没有.Net的实现,还是看看dudu的实现吧。在duduAPI中发现了这个CookComputing.XmlRpc 0.9.2   .NET CLR 1.1.4322,哈哈应该是他了。Google我太爱你了,是你帮助了我找到了 http://www.cookcomputing.com/blog/index.html ,呵呵原来是cookcomuting.Net下实现了XML-PRC。赶快下载( http://www.xml-rpc.net/ ),让我来体验一下XML-PRC

下载源代码后,运行里面的Math这个SampleVery Cool使用这个Liberry非常简单,感觉比Remoting还要简单,遗憾的是现在的版本 0.9.2 由于.Net Framework的原因现在只支持Framework 1.1不支持Framework 2.0,在说明中会在以后版本支持 Framework 2.0

哈哈,大家赶快去体验吧。

体验之后发现XML-PRC.Net的客户端实现的代理模式挺有意思,决定研究一下。打开源代码发现使用的是动态创建Assembly的技术,也就是该技术导致了不支持Framework2.0的原故。

 

 
   从上面的图(画的不好请见谅)看出客户端通过
XmlRpcProxyGenCreate方法创建了一个实现YourInterface的类,同时继承与XmlRpcClientProtocol,在这里使用了AssemblyBuilder具体可以查看MSDN。然后把YourInterface的方法全部由XmlRpcClientProtocol的一个Invoke的方法代理,该函数的签名如下:

public object Invoke(string MethodName,params object[]Parameters)

哈哈,这回终于找到关键所在了,在Invoke方法里面就可以按照XML-RPC的标准通过WebRequest对象调用远程的方法了。

由于时间有限只能分析到该程度了,如有不正确的地方请大家指出,希望以后和大家多多交流。

另外还想请大虾们分析一下XML-RPCWebServiceRemotting之间的利弊。

posted on 2006-06-20 11:37 kilxy 阅读(3019) 评论(11) 编辑 收藏

评论

嗯,有人能详细说一下这个和webservice的差别吗?
 回复 引用   

#2楼 2006-06-20 12:56 dudu      
可以直接在.NET Framework 2.0中使用,博客园网站程序目前就运行于ASP.NET 2.0。
 回复 引用 查看   

看了你的文章,不明白所谓的XML-RPC有多牛叉的地方。
我的感觉就是,访问服务器的时候,采用POST方式
HTTP协议的正文是一个标准的XML文档。
然后服务器解析这个XML,从而交换信息!!!
WEB SERVICES不也是这样的吗?只不过SOAP的格式是一种规范。

俺几百年前就这么干了…………你居然惊讶得下巴都掉了!!唉…………
 回复 引用   

这位大哥,能不能把你们的相关知识分析得详细一点,小弟先谢了
 回复 引用   

#5楼 2006-06-20 15:59 Pharaoh      
实际上就是来回都用XML传送数据,完全可以自己解析。
以前写的一个用JavaScript调用metaweblog的例子。
 
 回复 引用 查看   

#6楼 2006-06-21 00:46 ew[未注册用户]
http://www.oo11.cn">http://www.oo11.cn
http://www.00993.cn:2">http://www.00993.cn:2
http://www.00993.cn:2">http://www.00993.cn:2
http://www.ll33.cn
http://www.oo11.cn">http://www.oo11.cn
 回复 引用   

#7楼 2006-06-21 10:33 tianjj[未注册用户]
看不懂,是什么东东。
继续努力。
 回复 引用   

#8楼 2006-06-21 16:00 6371[未注册用户]
俺几百年前就这么干了…………你居然惊讶得下巴都掉了!!唉…………
 回复 引用   

#9楼 2006-12-07 16:12 剑飘红      
俺几百年前就这么干了…………你居然惊讶得下巴都掉了!!唉…………
 回复 引用 查看   

#10楼 2007-12-14 10:21 邓林海      
新鲜
 回复 引用 查看   

#11楼 2010-04-15 11:06 ddr888      
.net自身一直没有对xml-rpc的支持么 @dudu
 回复 引用 查看