REST是否会取代webservice?

shmily2038 2012-08-29
WebService用于互联网的主要缺点是:
1. WebService只将HTTP作为一种传输协议来使用(只暴露一个URI、只用POST方法、几乎完全没用HTTP头信息),又大量依赖XML这种冗余度很高的格式。所以性能-可伸缩性都不好。基于SOAP(信封)来包装请求及响应的数据
2. WebService暴露的API,通常客户端与服务器端耦合很紧,双方都难以进化。
3. WebService的WSDL只表达了对象暴露了哪些方法、方法的签名,而没有表达更重要的操作语义。
4. WebService不便于使用Ajax方式调用,不便于开发Mashup一类的应用。
性能-可伸缩性 + 紧耦合 这是WebService的两个最大问题。从架构风格的抽象层次来讨论,紧耦合其实是分布式对象、远程过程调用两大类的协议都无法解决的问题。

Fielding 的论文描述了 REST 应用程序联网策略。REST 与全堆栈 Web 服务根本不同,主要原因有三个:
REST 的核心抽象是远程资源而不是远程过程调用。
REST 没有发明一个详尽的标准列表,而是采用现有的 Internet 标准,包括 HTTP、XML 和 TCP/IP。
REST 没有覆盖每个可能场景,而是覆盖了最常见的问题。
请把 REST 想像成浏览。REST 客户使用与浏览器相同的 HTTP 命令访问资源。当 REST 客户访问到资源的表示时,客户转换到一个状态。使用不同的 HTTP 命令,REST 客户可以创建、读取、更新或删除资源的记录。

  REST之所以能够提高系统的可伸缩性,是因为它强制所有操作都是stateless的,这样就没有context的约束,如果要做分布式、做集群,就不需要考虑context的问题了。同时,它令系统可以有效地使用pool。
  REST对性能的另一个提升来自其对client和server任务的分配:server只负责提供resource以及操作resource的服务,而client要根据resource中的data和 representation自己做render。这就减少了服务器的开销。
dwarson 2012-08-30
分析的很好,我们项目大部分已经从jsf2转到dojo+jersey
shmily2038 2012-08-30
dwarson 写道
分析的很好,我们项目大部分已经从jsf2转到dojo+jersey

jersey在非jboss服务器性能上还行,RestEasy在jboss上面运行,性能更佳。 jersey开源组织也相对活跃,一些新特性马上就能用上哈。
Global site tag (gtag.js) - Google Analytics