观点:REST在SOA中适合哪个位置?
来源:互联网 发布:查看域名dns服务器 编辑:程序博客网 时间:2024/04/28 12:04
自REST面世以来,它就一直被无数口水所包围。各色人等纷纷现身说法,为各自的阵营摇旗呐喊。但不管怎样,REST终究还是站稳了脚跟。而且在各种争论之中,人们慢慢地得到了一个较为清晰的看法。
最近,Jean-Jacques Dubray就REST在SOA中适合什么位置发表了自己的看法,他认为,并非所有的REST特性都适合SOA,并列出了他认为应该使用的那些:
- URI:唯一的(而不是统一的)资源标识符
- 针对基于角色访问的内容协商
- GET,幂等性且无副作用(不要PUT、POST或DELETE)
- 恰当地使用缓存(不要为实例进行状态轮询)
在该贴的回复中,SubbuAllamaraju对没有提到“统一接口”表示惊讶。对此,JJ回应说,他确实提到了“统一接口”,但只是其中的“GET”方法。他还进一步表示,对于互联系统来说,“每个资源一个端点(one-endpoint-per-resource)”模型是一个有缺陷的模型。
他评论说:
……“面向资源”这个概念有价值吗?有,简直是无价之宝。每个人都应该了解REST。是的,有许多面向资源的模式也可以在互联系统中被使用。
HTTP作为中间件有价值吗?没有,它是构建互联系统的灾难。它非常适合“浏览器到服务器”的交互。毫无疑问,对于“服务器到服务器”的交互,它则完全是个祸害。并且一个原因就是,它造成了对一个端点(或每个资源多个端点)的需要。遗憾的是,它不仅仅是URI,换句话说,在代码中的某处要有一个东西来“侦听”那个特殊的URI。
此外,JJ认为,资源的概念虽然是SOA的核心,但是服务同样重要,并且两者是互补的。单单只提及一方并不足以构建互联系统。而且,他还在文中对“云计算是RESTful”的观点进行了批驳了,并表现出对“面向资源编程模型(Resource Oriented ProgrammingModel)”的不以为然。
他写道:
……每个信息系统都有两个维度:数据和流程。流程控制数据的状态,数据当然能并且必须在流程的边界外可被访问。至今为止,大多数的编程模型(MVC、ASP/JSP……)都完全假设,流程这个维度是没用的,因为它可以通过CRUD实现。REST也做了相同的假设。Roy针对Web做这样的假设没错,但针对云计算或企业SOA再做这样的假设就不对了(否则,它就看起来象Web了)。
这一观点在Arnon Rotem-Gal-Oz那儿得到了回应。他认为,尽管就单个服务而言,REST非常适合,但是涉及多个服务之间的协调时,REST就不太擅长了。其间,他建议结合事件驱动架构(EDA)引入业务事件,或使用一些外部实体来对服务进行编排(choreograph)或编配(orchestrate),如BPM。他说道:
在我的组织中,我们有大量的流程给事件处理提供帮助,其效果要比REST over HTTP好得多。
针对何时使用哪种架构风格,Arnon Rotem-Gal-Oz总结说:
架构风格(及架构模式)是你能用来解决挑战的工具。锤子可以被很好地用到很多场合,但是,最好是确保工具箱中不是只有锤子。
- 观点:REST在SOA中适合哪个位置?
- C语言中全局变量存放在哪个位置?
- struts2中 struts-default.xml在哪个位置?哪个包下?
- SQL触发器在存放在哪个位置
- Delphi的世界,你在哪个位置?
- oracle是安装在哪个位置
- 【0035】javascrip脚本放在哪个位置?
- 别在问数学、计算机,哪个更适合机器学习!
- 适合中小企业的SOA
- 适合中小企业的SOA
- REST 和 SOA
- Rest&Soap SOA
- REST与SOA
- SOA REST RPC SOAP
- 中国社会最新阶层划分:你在哪个位置?
- qq2013聊天记录在哪个文件夹?QQ2013聊天记录存放位置
- css代码是放在html代码的哪个位置
- acpi_init什么时候调用的?定义在哪个位置?
- 用Asp.Net创建基于Ajax的聊天室程序
- 我以前做php错误收集
- 权限
- ireport 用户手册第一章
- java中properties配置文件的操作
- 观点:REST在SOA中适合哪个位置?
- 为什么我们要加班
- VC下内存泄漏的检测方法
- 刚来
- 第一次世界大战中牛的一塌糊涂的战例
- 总结对指针的一些看法~~~~
- oracle语句调优--由null不使用索引想起
- 一周裁人1.9万,裁员过冬的IT公司汇总
- 摄像机主要指标及参数