365key.com
发现·保存·分享@天天网摘

Q版365key  设为首页 加为收藏 帮助

 首页  网址  添加  我的网摘  我的订阅  最新网摘  收录榜  点击榜  同好  配置  工具箱  标签  兴趣小组 
  IT168 |  华军下载 |  猫扑 |  VeryCD |  CSDN技术 |  DoNews |  9Flash |  中金 |  游侠 |  股票天下 |  游戏公会 |  电子工程 |  白银时代 |  和365Key合作

dvdlkdvd的网摘列表 RSS格式输出  365Key邮件订阅,每天可以定期收到邮件通知  使用 Gougou 订阅 使用 POTU 订阅
搜索词: 时间:
分类:     排序:
 
刷新列表 共1页、1项网摘
Xerdoc Together ?Web Service : WebOS中的Function Call点击:42
 分类:web_services; SOAP; REST 时间:2006-12-25 11:23:25 dvdlkdvd收录 复制到我的网摘
SOAP是面向活动,而REST是面向资源的
)SOAP

SOAP,全名是Simple Object Access Protocol,是Microsoft提交给W3C的Web Service协议。我觉得SOAP的两个最大的好处是:

协议的可扩展性(Extension Mechanism)
良好的工具支持
SOAP的消息称为一个SOAP Envelope,包括SOAP Header和SOAP BODY。其中,SOAP Header可以方便的插入各种其它消息来扩充Web Service的功能,比如Security(采用证书访问Web Service),SOAP BODY则是具体的消息正文,也就是Marshall后的信息。

SOAP调用的时候,也就是向一个URL(比如http://ws.invesbot.com/stockquotes.asmx?WSDL)发送HTTP Post报文,调用方法的名字在HTTP Request Header SOAP-Action中给出,接下来就是SOAP Envelope了。

服务端接到请求,执行计算,将返回结果Marshall成XML,用HTTP返回给客户端。

SOAP的工具支持非常好,比如在.NET里,可以用WSDL.exe非常方便的为一个Web Service生成本地Proxy(Proxy模式),这样,你的程序就像调用本地API一样了,而由Framework为你完成Marshall和传送的工作。



3)REST

REST - Representational State Transfer, 是Roy Fielding的博士论文中提出的概念,其实,与其说REST是一种Web Service协议,不如说REST是一种Web based软件架构,一种基于Resource State的服务访问架构。

通俗的将,可以用你访问我的Blog的过程来描述REST的工作流程。当你访问我的Blog首页,其实就是对我的Blog的一个资源访问,那么Web Server会将这个资源的Representation返回给你,也就是我的Blog的首页的HTML。当你点击了这个HTML中的一个link,比如某篇Blog,你实际上就又对另一个资源发生了请求,Web Server会将新的资源Representation以HTML的形式发送给你。

我曾经看过一个人对REST和SOAP的解释,我觉得很对,SOAP是面向活动,而REST是面向资源的。

Build一个Web Service,in SOAP way还是in REST way还是有很大的不同的。

比如说,要实现一个世界杯赛程、赛果、球员评分查询的这样一个简单的Web Service,如果用SOAP的话,我们可以生成一个WSDL:

http://www.mengyan.org/worldcup2006/?WSDL

它包含很多方法,比如GetMatchResult, GetPlayerScore, GetFixture,客户端通过调用这些Web Method来获得相应的数据。

如果用REST的方法来构架,就得先分析系统中都有那些资源,每一个资源有一个URL,比如:

http://www.mengyan.org/worldcup2006/fixture/?team=Brazil

http://www.mengyan.org/worldcup2006/match/?id=1

http://www.mengyan.org/worldcup2006/player/?name=Beckham

每种资源都是一个URL,然后利用URL Path或者Query来实现参数的传递,Response则是这个资源的一个表示形式。

当然,这些只是逻辑上的URL,具体的实现是采用URL Rewrite还是其它就可以你的具体设计了。

万事没有绝对,你也可以用其它方法设计REST Web Service。比如Flickr,它的Rest Service都是如下样子:

http://www.flickr.com/services/rest/?method=flickr.test.echo&name=value

也就是说,整个Service是一个资源,method变成了参数,用Method来标明不同的方法调用。我觉得,Flickr的REST Service其实还是采用传统的SOAP思想考虑的,只不过用了REST来实现。不能称作Thinking in REST way 。

http://www.xerdoc.com/blog/archives/236.html
页码: [1 共1页、1项网摘

使用帮助 |  如何保存网摘 |  给365Key提建议 |  媒体报道 |  站长推广须知
Copyright (C) 2004 365Key.com--天天网摘 All Rights Reserved