【发布时间】:2009-06-08 23:20:04
【问题描述】:
我几乎没有将 REST 和 SOAP 的架构作为我的架构中的 SOA 进行检查。比较两者时,我听说 REST 的缺点之一是不支持“事务”——他们在说什么?因为据我所知,它确实支持来自 GET、POST、DELETE 等底层 HTTP 协议的 CRUD 操作。
有人可以详细说明吗?如果我选择 REST,它是否可以支持我的 CRUD 操作的事务密集型工作场所,还是走 SOAP 路由对我来说更好?
【问题讨论】:
我几乎没有将 REST 和 SOAP 的架构作为我的架构中的 SOA 进行检查。比较两者时,我听说 REST 的缺点之一是不支持“事务”——他们在说什么?因为据我所知,它确实支持来自 GET、POST、DELETE 等底层 HTTP 协议的 CRUD 操作。
有人可以详细说明吗?如果我选择 REST,它是否可以支持我的 CRUD 操作的事务密集型工作场所,还是走 SOAP 路由对我来说更好?
【问题讨论】:
如果您需要跨多个调用执行事务,最好不要选择其中任何一个,而是选择远程处理或在 wcf 中进行二进制序列化之类的东西。 REST 和 SOAP 都是无状态的。连接打开,执行操作,然后再次关闭。话虽这么说,wcf 确实通过 SOAP 支持事务支持,所以如果您必须在两者之间进行选择,那将是一个。
【讨论】:
您所指的事务类型是分布式事务。这允许客户端在服务器(甚至几个不同的服务器)上执行多个调用,并让它们全部提交或全部回滚。
WCF 通过 WS-AtomicTransaction (WS-AT) 协议支持分布式事务。该协议面向 SOAP。因此,要使用 WCF 事务,您必须使用 SOAP——而不是 REST。
虽然您不会使用 REST 进行跨调用分布式事务,但您仍然可以在特定方法中使用数据库事务。例如,您可以实现一个 POST 操作,该操作在该方法的一个事务中提交订单并更新 Order 和 OrderLine 数据库表。因此,仅仅因为您的应用程序是事务密集型的,并不一定意味着对 REST 来说是个问题的分布式类型的事务在您的环境中会很重要。
【讨论】:
致昨天的quoteRoy Fielding
我认为“剩余交易”是 矛盾修饰法。
【讨论】:
看看RETRO。
【讨论】: