Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

什么是REST风格应用

4,866 views

Published on

  • Be the first to comment

什么是REST风格应用

  1. 1. 什么是REST风格应用<br />TonyDeng<br />http://friendfeed.com/tonydeng<br />http://twitter.com/wolfdeng<br />http://delicious.com/wolf.deng<br />http://wolfchina.blogbus.com<br />
  2. 2. REST介绍<br />什么是REST<br />REST与RPC的区别<br />为什么要使用REST<br />REST开发框架介绍<br />
  3. 3. What is REST<br />
  4. 4. 什么是REST<br />REST是Roy.Thomas.Fielding在他的博士论文中提出的一种架构思想<br />Fielding提出REST的几种约束<br />REST实际上是回归http本身,或者说http是REST的实际的应用<br />
  5. 5. REST关键的约束<br />每个资源有一个唯一标识<br />使用标准方法(GET、POST、PUT、DELETE)<br />Request/Response自描述<br />资源多重表述(MIMEType驱动)<br />无状态通信<br />超媒体及应用状态引擎<br />
  6. 6. REST的元素<br />数据元素(DataElements)<br />
  7. 7. REST的元素<br />资源和资源标识符(Resources and Resource Identifiers)<br />REST对信息的核心抽象就是资源<br />资源不是存储对象(storage object)<br />资源是一种概念上映射<br />资源是有层次的(root resource/sub resource)<br />需要URITemplate来描述资源<br />
  8. 8. 资源的规划<br />/user<br />/user/{userId}<br />/user/{userId}/friend<br />/user/{userId}/friend/@{groupName}<br />/invite<br />/invite/{key}<br />/family<br />/family/{familyId}<br />/family/{familyId}/topic/@vote<br />/family/{familyId}/topic/{topicId}<br />/search<br />
  9. 9. REST的元素<br />表述(Representations)<br />表述包括数据、描述数据的元数据<br />REST通过使用一个表述来捕获资源的当前或预期的状态、在组件之间传递该表述<br />Request/Response自描述约束的关键<br />
  10. 10. REST的元素<br />连接器(Connectors)<br />连接器代表了一个组件通信的抽象接口。<br />通过提供清晰的关注点分离、并且隐藏资源的底层实现和通信机制<br />
  11. 11. REST的元素<br />组件(Components)<br />
  12. 12. REST架构的过程视图<br />
  13. 13. REST的三角关系<br />Hypermedia: HTML, XML,JSON,JPG,GIF <br />[POST,GET, PUT,DELETE],<br />[CRUD]<br />动词<br />表述<br />Resources<br />名词<br />URI, XRI … <br />
  14. 14. RESTVersus RPC<br />
  15. 15. RPC简单介绍<br />RPC是客户端发出命令,以使服务器做出特定的操作。<br />JSON-RPC、XML-RPC<br />仅仅只是把http作为一个传输协议来使用,是对http协议的误读。<br />RPC有动词的倾向。<br />
  16. 16. JSON-RPC<br />JSON-RPC项目主页<br />http://json-rpc.org/<br />例子:<br />http://localhost/json-rpc/call<br />{<br /> “method”:”postMessage”,<br /> ”params”: [&quot;I have a question:“,”Tony Deng”], <br /> &quot;id&quot;: 101<br />}<br />
  17. 17. XML-RPC<br />XML-RPC项目主页<br />http://www.xmlrpc.com/<br />简单请求的例子<br />http://localhost/xml-rpc/call<br /> &lt;?xml version=&quot;1.0&quot;?&gt;<br /> &lt;methodCall&gt;<br /> &lt;methodName&gt;examples.getStateName&lt;/methodName&gt;<br /> &lt;params&gt; <br /> &lt;param&gt;<br /> &lt;value&gt;&lt;id&gt;41&lt;/id&gt;&lt;/value&gt; &lt;/param&gt; <br /> &lt;/params&gt;<br /> &lt;/methodCall&gt; <br />
  18. 18. REST和RPC的区别<br />REST强调资源有唯一的URI,RPC强调过程(动词)有统一的接口来激发它们。<br />REST回归HTTP最初的设计,RPC仅仅是把HTTP作为传输协议来使用<br />REST强调各个组件的松耦合;RPC耦合更加紧密,无组件概念<br />REST是由超文本驱动,RPC由方法驱动<br />REST强调HTTP通信的语义可见性,通过消息头和标准的HTTP方法来体现;RPC把语义封装在HTTP消息体中。<br />RPC的机制是根据语言的API(language API)来定义的,而不是根据基于网络的应用来定义的。<br />
  19. 19. Why REST?<br />
  20. 20. 优点<br />使用业界开放的标准协议<br />架构清晰,松耦合<br />无状态服务,很方便水平扩展(scaleout)<br />拥有幂等性和安全操作<br />面向资源开发<br />回归HTTP本身,天生就是为了Web应用<br />Fielding在论文中所阐述的REST是作为一种架构风格的REST。他所设计的HTTP和URI就是根据REST的思想来设计的,REST其实就是Web架构本身,也是Web在技术上取得成功的原因。<br />HTTP和URI其实就是为建造具体的REST风格架构实例而服务的。<br />它是一种很好的分布式应用的架构风格<br />
  21. 21. REST开发框架介绍<br />
  22. 22. 遵循JSR311(JAX-RS)规范的框架<br />Restlet<br />Jersey<br />RESTEasy<br />CXF<br />
  23. 23. 其他框架<br />Spring3.0<br />ROR(Rubyon Rails)<br />RIP(Rest in Python)<br />

×