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

云数据库_宜宾网站建设公司_评分榜

小七 141 0

本博客是一系列教程的一部分,详细解释了SAP云平台后端服务的用法。

快速链接:定义用法参考

如果你从未听说过ETag:这是一个很好的博客如果你一直想知道这些etag:继续阅读如果您熟悉ETag并且只需要知道CDS语法:do this hop

它是什么,ETag?

这个名字太神秘了…但是它的意思很实在

缩写:entity tag

用于乐观并发控制它是什么,乐观并发控制?它不是悲观的并发控制。什么是悲观并发控制?

好的,物联网的前景,如果是"悲观"的话,我们希望100%安全。每当需要修改后端(数据库)中的数据项时,首先应用锁。这样,只允许当前用户(或应用程序)修改数据然后更改数据并安全地写入数据库。然后锁被释放。此过程不是很快(可能会导致死锁)。特别是,如果不需要锁,因为资源不太可能被多个用户同时访问。此外,OData服务无论如何都是"无状态的"。

这就是为什么"悲观"不适用于我们的情况,我们必须考虑"乐观并发控制":当一个资源,一个实体,被请求时,它不会被锁定。所以可以修改。然而,第二个用户可以同时请求和修改它。如果发生这种情况,更改可能会被覆盖,请求可能会失败,等等为了防止这种失败,我们有强大的ETag。这么好的解决方案,应该是大胆的为了防止这种失败,我们有强大的ETAG.

优秀的ETAG提供并发控制,但不锁定换句话说,ETag表示实体的版本。换言之,ETag用于有条件的请求

为什么我们需要它,ETag?

因为它防止并发修改,没有开销。

示例:在web应用程序中,用户打开任何内容的详细信息e、 g.a产品?是的,例如产品用户界面允许编辑,因此用户可以更改一些细节,但不提交同时,第二个用户决定删除同一产品并提交删除。当第一个用户最终决定提交时,更改的产品就不存在了,所以崩溃是不可避免的那现在怎么办?为了防止这种失败,我们有强大的ETAG。很大胆,但这么好的解决方案,它应该是丰富多彩的为了防止这样的失败,我们有一个很棒的ETAG.

谁需要它,ETAG?

对于通过HTTP请求的资源,ETag不是必需的。在演示场景中使用的服务不需要它

但在生产API中应该使用它

它是如何工作的,ETag?

作为一个电子标签,它的工作神奇。开玩笑。

我们必须给实体添加一个标签。标签可以是任何东西。例如ETag?每当实体被更改时,标记也会更改。此外,HTTP协议几乎没有为ETag处理保留的状态代码。

示例流:

OData服务实现决定支持ETag每当这样的实体被发送到客户机(例如,single GET)时,ETag头就被发送如果客户机为该实体发送修改请求(例如修补或删除),则必须在名为If Match的头中发送ETag值从字面上说:"我想修改这个实体,但前提是ETag与给定的值匹配。"因此,服务实现可以检查是否允许修改请求。如果客户机不发送该报头,淘客帝国,则服务器将以所需的错误前提条件进行响应如果ETag已发送,但不匹配(实体在此期间发生了更改),则错误为Precondition failed如果是这种情况,那么客户机用GET获取实体,并使用新的ETag发送一个有效的修改请求

另一个示例流:

直到现在我们已经讨论了并发控制,我猜这个场景现在已经很清楚了。很清楚,谢谢ETag还有第二个优点:OData服务是无状态的,但是避免重复调用是一个优势

如下:客户端应用程序调用实体。一个大实体。即使是一个巨大的实体客户机读取并记住ETag当客户端应用程序向该实体发出另一个请求时,它将发送该ETag如果(巨大的)实体没有被修改,那么服务器通过返回NOT modified来指示它好消息是,(巨大的)实体不会被再次发送。表示我向服务器发送以下愿望:"如果当前ETag与我发送的ETag不匹配,请仅将该巨大实体发送给我"这是条件GET请求的实际用例。

我们将在下面的测试部分讨论这些示例

它是如何在CDS、ETag中表达的?

一个实体有一个属性,通过在该属性上添加注释

标记为ETag相关因此,每当实体发生更改时,该属性也会随之更改。通常,这样的属性可以是时间戳,指示上次更改的时间。这种ETag值可以自动生成

我们如何表达我们的CDS,ETag?w

很高兴看到它的实际应用当然,真正云服务器,我们将用一个例子来验证这一切。注:为了简化操作,让我们使用一个version属性,当我们更改实体时手动更改这个数字。下面是第二个带有时间戳的例子