ステートレス-プログラムによって維持されるメモリ(状態)はありません
ステートフル-プログラムにはメモリ(状態)があります
状態の概念を説明するために、ステートフルな関数とステートレスな関数を定義します
ステートレス
//The state is derived by what is passed into the function
function int addOne(int number)
{
return number + 1;
}
ステートフル
//The state is maintained by the function
private int _number = 0; //initially zero
function int addOne()
{
_number++;
return _number;
}
他の人が言ったように、httpは本質的にステートレスです。そのため、アプリケーションに状態を組み込む必要があります。
クライアントプロセスがサーバープロセスと通信しているWeb経由のリクエストを想像してください。ステートレスhttpプロトコルで状態を維持するために、ブラウザは通常、リクエストごとにセッション識別子をサーバーに送信します。リクエストごとに、サーバーは「ああ、この人」のようになります。その後、このセッションIDに基づいて、サーバー側のメモリまたはデータベースで状態情報を検索できます。
純粋にステートレスな環境では、このセッションIDは必要ありません。各リクエストには、サーバーが処理する必要があるすべての情報が含まれます。ただし、多くのアプリケーションでは、特定のコンテンツを表示するためにセッションが認証されているかどうかを追跡したり、ユーザーの行動を追跡したりするために状態を維持する必要があります。リクエストごとにネットワーク経由でユーザー認証情報を送信することは望ましくありません。