添加/更新Web服务模式。常用还是单独的方法?

时间:2014-03-11 09:18:52

标签: web-services design-patterns crud

我正在维护一个可以在购物车中添加和更新产品的系统。 ADD和UPDATE之间的唯一区别是在UPDATE期间产品具有OrderId。

前端使用Web服务与后端通信。

我应该使用ADD和UPDATE的常用方法编写Web服务吗? 或者Web服务应该有两种不同的方法,一种用于ADD,另一种用于UPDATE?

每种模式的优点/缺点是什么?

1 个答案:

答案 0 :(得分:3)

我确实意识到你并不是在询问SQL,但是可以通过查看可比较的问题域来提供信息。组合INSERT和UPDATE操作很常见,成为SQL的标准功能,称为MERGE(有时候,通常是UPSERT),所以通过这个标记,它肯定是可接受的做法。

尽管如此,了解可能的后果仍然是件好事。由此产生的一类问题是当你有并发作家时。

如果您在ADD和UPDATE之间有明确的区别,那么两个尝试对同一个键执行ADD的并发写入器应该会导致第二个写入器失败。根据场景,这样的显式失败可能是件好事,因为它会明确告知您有关并发冲突的信息。

另一方面,如果调用MERGE方法,则第二次写入操作(最初由编写者作为ADD)将自动成功作为UPDATE。有时候,这就是你想要的,而在其他情况下,这可能是不可取的。

通常,应使用并发令牌(例如时间戳)来解决并发冲突。