Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Web services 添加/更新web服务模式。常用还是单独的方法?_Web Services_Design Patterns_Crud - Fatal编程技术网

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

Web services 添加/更新web服务模式。常用还是单独的方法?,web-services,design-patterns,crud,Web Services,Design Patterns,Crud,我正在维护一个可以在购物车中添加和更新产品的系统。添加和更新之间的唯一区别是,在更新期间,产品具有OrderId 前端使用web服务与后端通信 我是否应该使用添加和更新的通用方法编写web服务? 或者web服务应该有两种不同的方法,一种用于添加,另一种用于更新 每种模式的优点/缺点是什么?我知道您并不是在问SQL,但查看类似的问题域可以提供信息。将插入操作和更新操作结合起来是SQL的一个标准特性,称为MERGE(有时,通常称为UPSERT),因此,从这个角度来看,这当然是可以接受的做法 尽管如此

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

前端使用web服务与后端通信

我是否应该使用添加和更新的通用方法编写web服务? 或者web服务应该有两种不同的方法,一种用于添加,另一种用于更新


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

我知道您并不是在问SQL,但查看类似的问题域可以提供信息。将插入操作和更新操作结合起来是SQL的一个标准特性,称为MERGE(有时,通常称为UPSERT),因此,从这个角度来看,这当然是可以接受的做法

尽管如此,意识到可能的后果还是很好的。由此产生的一类问题是,当您有并发编写器时

如果在添加和更新之间有明确的区别,那么两个并发写入程序都试图在同一个键上执行添加操作,这将导致第二个写入程序失败。根据场景的不同,这种显式失败可能是一件好事,因为它会显式地通知您并发冲突

另一方面,如果调用MERGE方法,则第二个写入操作(编写器最初打算将其作为ADD)将作为更新自动成功。有时,这是您想要的,而在其他情况下,这可能是不可取的


一般来说,并发冲突应该用并发令牌(比如时间戳)来解决。

web服务是RESTful的吗?如果是,请看一下创建/更新的PUT和POST之间的区别,您可以在这里找到一篇好文章:在使用web服务时并发真的会成为问题吗?这将由后端系统来处理,因为web服务方法不会直接写入数据库。