我们是否正在尝试将一个方形挂钩放入一个带有REST的圆形孔中以及其他任何解决方案?

时间:2011-12-28 16:26:08

标签: rest soap xml-rpc

最近,我的任务是在SOAP / REST时代之前采用旧的Web服务,并使其与当前的Web服务“标准”相提并论。这是非常直接的服务,HTTP(s)POST XML,做一些事情,并用XML作为一个非常面向消息的服务。

“web”服务最常用的两个选项是SOAP和REST ......

虽然从技术上讲,SOAP可以完美地适应我的应用程序,但它感觉非常繁重,并且确实不需要任何WS- *功能。我的意思是确定它确实做SSL和简单的用户名/密码验证,但WS - *!@ $ @ $ @ 1 !!!谁需要它?!至少不是我和我对那些做的人表示哀悼(我确信在正确的情况下它是很好的技术;))

现在我喜欢REST,因为它看起来很轻盈。事实上,我能够采用一个非常流行的REST框架,如Jersey,并实现Web服务的每个功能。事实上,我设法将代码库从数千行代码中减少到100行代码。显而易见的是,在旧服务中正在进行大量的手动工作来解析XML并映射到正确的函数调用等...

REST有什么问题?

在高层?什么都没有(你可以坐下来争论利弊,直到奶牛回家)。这篇文章/问题不是SOAP与REST的火焰战争。但为什么大多数人选择沿着这条路走下去呢?

虽然我能够使用Jersey和REST实现100%的服务,但是如果有的话,我几乎设法打破了“REST”的所有规则。

  • 它不提供命名资源
  • 它不可缓存
  • 它比CRUD更复杂
  • 一切都是POST
  • 一切都以200 OK
  • 返回

但是效果太棒了! :)但我打破了规则:P

一个例子,我的应用程序有数百个“错误”代码。 REST人员喜欢说地图到400 Bad Request并将你的理由放在体内。但是我说当我只是简单地返回XML响应中的代码时,为什么还要麻烦。为什么会混淆客户端(Developer),只需解析一个代码?

因此,如果SOAP很重并且REST似乎更倾向于CRUD和面向资源的应用程序类型,那么轻量级“Web”服务的选项有哪些? XMLRPC?为什么人们正在盯住REST或者我错过了什么?

让乐趣开始吧! :)

1 个答案:

答案 0 :(得分:2)

如果您很高兴重新发明一个经过测试的分布式应用协议(如HTTP),那么请随意。

  • 如果您遵守HTTP,那么新开发人员将能够快速了解​​其工作原理 更快。
  • 如果您符合HTTP,那么您可以重用现有组件,如调试工具,缓存代理,负载均衡器。
  • 您的应用程序可以获得多年实际测试的好处。