12

したがって、「べき等」は次のように定義できます。

N回実行すると、アクションを1回だけ実行するのと同じ効果を持つアクション。

了解しました。簡単です。

私の質問は、この定義の微妙さについてです-アクションはそれ自体がべき等であると見なされますか、それともアクションに渡されるデータも考慮する必要がありますか?

例を挙げて明確にしましょう。

リソースを更新するPUTメソッドがあるとすると、それを呼び出します。f(x)

明らかにf(3)、入力として3を指定する限り、べき等です。また、同様に明らかなf(5)ことですが、リソースの値が変更されます(つまり、3または以前に存在していた値ではなくなります)

したがって、べき等について話すとき、私たちは(すなわちf(x))のようなアクション/関数の一般化を指しているのでしょうか、それともアクション/関数+それに渡されるデータ(すなわち)を指しているのf(3)でしょうか?

4

4 に答える 4

6

リソースを更新する PUT メソッドがあるとします。これを f(x) と呼びます。

明らかに、入力として 3 を指定する限り、f(3) は冪等です。そして同様に明らかなように、f(5) はリソースの値を変更します (つまり、3 や以前の値ではなくなります)。

これは、サーバーの実装がPUTこのべき等プロパティを尊重するようなものであることだけが明らかです。HTTP のコンテキストでは、RFC 2616 は次のように述べています

メソッドは、(エラーや有効期限の問題は別として) N > 0 の同一のリクエストの副作用が 単一のリクエストの場合と同じであるという点で、「冪等性」のプロパティを持つこともできます。

少し話が逸れますが、Web のような分散システムでは、可換性と同時要求も考慮する必要があります。たとえば、同じ PUT(x1) リクエストの N+1 は同じ効果を持つはずですが、別のクライアントが別の PUT(x2) リクエストを作成したかどうかはわかりません。したがって、n PUT(x1)=PUT( x1) および m PUT(x2)=PUT(x2) の場合、2 つのセットの要求をインターリーブすることができます。

于 2011-12-14T14:27:00.933 に答える
5

冪等性は、アクションがそのドメイン上のすべての値、つまりすべての に対して保持されることを必要としf(f(x)) = f(x)ますx。それについて考える別の方法は、操作とそれ自体の構成がまさにその操作である場合、その操作は冪等であるということです。

于 2011-12-14T14:17:05.273 に答える
3

冪等性とは、サーバーの状態が一連の呼び出しによって最大で 1 回変更されることを意味すると想定しています。ほとんどの場合、この用語は、サーバーの状態が何度呼び出してもまったく変更されないことを意味するために使用されます。このような状況では、あなたの 2 つのケースの違いは重要ではありません。

于 2011-12-14T14:16:02.017 に答える
3

これは冪等性の完全な定義ではありません。任意の項目 x について f(f(x)) == f(x) の場合、関数は冪等です。

PUT は、ここでの f() 関数の副作用であり、その結果ではありません。

于 2011-12-14T14:17:17.550 に答える