云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

专属服务器_美国站群多ip服务器_价格

小七 141 0

本文详细介绍了在SAPUI5应用程序的OData写入场景中实现etag的方法。

传统的SAP GUI应用程序使用lock对象进行悲观锁定,以确保并行使用场景中的数据一致性,如单个物料编号由两个用户同时编辑,同一个员工的工作计划在两个会话中并行更新,等等

这种紧密耦合有一些缺点,例如一个用户可以长时间阻塞进程,非关键用户可以选择放弃不允许关键用户进行更改的更改,直到非关键用户发布事务,等等。这也不符合现代用户体验模式,即要求应用程序无状态、解耦和可扩展,怎么选购云服务器,以适应大型事务量。

OData为写事务(如更新和删除)提供基于ETag的乐观并发管理。同一用户可以通过多个浏览器会话或在多个设备上登录,或者多个用户可以同时登录。在所有这些场景中,数据必须是一致的,用户输入的数据不应被忽略或丢失。数据应该保持一致,或者应用程序应该优雅地通知用户所做的更改无法保存。

乐观并发控制是一种技术,在整个事务期间,多个事务可以频繁地完成,而不锁定对象。基于ETag的乐观并发控制将数据库对象锁定很短的时间(通常是毫秒),这是执行数据库写入事务的实际时间)。

开箱即用,ETag实现不允许在执行任何修改数据库操作之前获取锁。用户在同一个实体上同时执行更新和删除请求是可能的,所以在实现etag之前设置锁就成了一个很重要的问题。如果没有设置锁,那么即使两个不同操作的ETag检查都成功,其中一个操作的数据库操作可能会覆盖另一个操作的更改,因为在第二个操作成功之前,第一个操作已经修改了数据,因此第一个操作的结果将变得不一致。如果我们在第一时间获得了锁,云服务器租用,物联网公司,那么就不会出现这种不好的情况,因为在第二次操作中,锁的获取将失败,进一步的处理将停止。这两种方法如下图所示–

图1:标准ETag实现

图2:带锁的自定义ETag实现

我以OData DELETE调用为例说明ETag的工作情况

浏览器中运行的SAPUI5应用程序在"If Match"HTTP中传递实体的ETag值请求头。

图3:OData DELETE调用,If Match头传递要删除实体的ETag值。

要实现此自定义ETag实现,应执行以下步骤。

A.重新定义/IWBEP/If\u MGW\u APPL\u SRV\u RUNTIME~GET\u IS\u CONDITIONAL\u IMPLEMENTED

重新定义框架方法,如下所示,以启用条件处理是ETAG的一部分。在我们的例子中,在gateway项目中将属性声明为ETag的一般方法不起作用,云服务器买哪个好,因为我们需要在e-Tag中实现锁定。场景是不允许同时更改资源,直到数据被删除并且出现错误时才会发出通知。

图4:条件ETag实现

运行并检查值,如–

图5:如果在调试模式下匹配HTTP头值

B。提取ETag值

使用此代码片段,我们可以提取Delete Entityset方法中的timestamp值(因为我们已经启用了条件处理,所以这个值将总是被填充)

代码片段1:ETag实现

PS:另一种方法是从头中获得修改后的timestamp,云服务器和服务器,但是它需要解析这个值。

然后可以将获得的timestamp(如图所示)与数据库值和需要采取的操作。

图6:解析的时间戳值

在这种情况下,我们检查前端修改后的时间戳是否与数据库中的时间戳不同,然后操作失败,并通知用户删除失败,因为他/她试图删除的数据已过时(已被其他人修改)

请留下您的经验和反馈。

参考– https://blogs.sap.com/2017/05/05/how-to-handle-etags-in-sap-gateway-using-code-based-implementation/