2016-08-25 64 views
1

我们公开可以公开POST,PUT,GET和DELETE操作的REST服务。消费者通常以这种方式设计用户界面,只需点击一下用户即可创建,更新和删除。如果他们向我们发送了三次PUT POST和DELETE调用,那么它们中的一个可能会失败并导致数据不一致。 目前我们创建一个包装服务,允许他们调用一个调用所有三个操作的服务,并且我们保证一个事务与JBOSS事务控制,所以如果一个操作失败,那么所有的事务都会回滚。确保多个REST调用的事务已完成

是否有更好的方式来处理这个,这可以帮助我们避免创建这些包装服务?

回答

0

简答:不,没有。

您正在为您的REST服务寻找“交易”支持。有很多在线资料(尽管没有开箱即用的解决方案),包括这个确切的问题:Transactions in REST?

我认为重要的是要注意事务的概念有点与无状态分布式系统的概念相冲突。有一些人致力于将事务交给REST(https://www.atomikos.com/Blog/TransactionsForTheRESTOfUs,http://www.jboss.org/reststar/specifications/transactions.html),但通常解决方案是以不需要分布式事务的方式来设计系统。

直接导出数据库记录操作,因为CRUD操作是大多数时间的罪魁祸首。如果你这样做,只是想出一些对客户有实际意义的资源,你会发现你的大部分问题都消失了。

作为一个为金融机构工作的旁注,需要将资金从一个账户转账到另一个账户的经典例子相当简单。它在现实生活中并不这样,在这个意义上很多(包括某些形式的实际资金转移)并不是交易性的。

相关问题