状況によっては同じことだと思いますが、少し異なる側面に焦点を当てています。
「ステートレス」とは、状態がないことを意味すると人々が言うとき、私は笑ってしまいます。もちろん、いくつかの観点からはいくつかの状態があります。たとえば、ステートレス サービスは、オブジェクトの複雑なグラフ (依存性注入) によってサポートされます。問題は、ネットワークプロトコルの「状態」の意味がわずかに異なることです。これは、以前の要求/応答に依存するものです。しかし、定義上、不変サービスは以前の呼び出しにも依存しません。
「ステートレス」は必ずしも HTTP プロトコルに関連しているわけではありません。同じ用語は、光沢のある OOP コードのサービス オブジェクトのセッターを議論するために使用できます。ここで、これら 2 つの用語が実際には同じであることがわかります。不変サービスはステートレス サービスであり、その逆です。
しかし、値オブジェクトを「ステートレス オブジェクト」と呼ぶのは、私にとっては厄介です。ひどいですね。
要約: サービスの場合 (ネットワークまたは OOP は関係ありません)、これらの用語は交換可能です。
例:
interface Logger
{
public function logWarning(string $message);
public function logError(string $message);
}
何回呼び出したlogWarning
か、またはlogError
呼び出しの順序も重要ではありません。したがって、これを「ステートレス サービス」と呼ぶことができます。
ただし、このサービスにはセッターもミューテーターもありませんchangeFileName()
->不変のサービス/オブジェクトです。
可変性により、オブジェクトはステートフルになります。ステートフルはオブジェクトを変更可能にします。これらの用語は、サービスのコンテキストで相互に依存しています。