1. ホーム
  2. terminology

[解決済み] ステートレス vs ステートフル

2022-10-23 16:06:18

質問

プログラミングにおけるステートレス、ステートフル設計について、具体的な情報が載っている記事に興味があります。私はそれについてもっと学びたいので興味があるのですが、本当にそれについての良い記事を見つけることができません。このテーマについて漠然と議論しているウェブ上の記事を何十本も読みましたし、ウェブサーバーやセッションについても話しています - これも「ステートフルとステートレスについて」ですが、私はコーディングにおける属性のステートレス設計とステートフル設計に興味があります。例えば、以下のようなことです。BLクラスは設計上ステートレスであり、エンティティクラス(少なくとも私はそう呼んでいます - Person(id, name, ...) のように)はステートフルである、と聞いたことがあります。

理解できれば、より良いコードを書けると思うので、知ることは重要だと思います(粒度を意識するなど)。

とにかく、本当に短く、私が知っているステートフルとステートレスの比較は以下の通りです。

ステートフル(WinFormsのような)。さらに使用するためにデータを保存しますが、CPUやメモリの制限によって制限されるため、アプリケーションのスケーラビリティが制限されます。

ステートレス (ASP.NET のような - ASP は ViewStates でステートフルであろうとしますが)。 アクションが完了すると、データは転送され、インスタンスはスレッドプール(Amorphous)に引き渡されます。

ご覧のように、かなり曖昧で限られた情報 (そして、サーバーとの対話にかなり焦点を当てた) であるため、もっとおいしい情報を提供していただけると本当にありがたいです :)

どのように解決するのですか?

から始めることをお勧めします。 質問 の質問から始めることをお勧めします。この質問はステートレス・プログラミングの利点について議論しています。これはどちらかというと関数型プログラミングの文脈ですが、あなたが読むものは他のプログラミングパラダイムにも適用されます。

ステートレス プログラミングは、同じ引数で呼び出されると常に同じ結果を返す関数という数学的概念に関連しています。これは関数型プログラミングパラダイムにおける重要な概念であり、この分野で多くの関連記事を見つけることができるだろうと期待しています。

より深く理解するために研究できるもうひとつの分野は、RESTful Web サービスです。これらは設計上、状態をどうにかして保とうとする他の Web 技術とは対照的に、ステートレスです。(ASP.NETはViewStateを使用して状態を維持しようと努力しており、間違いなくステートフルと言えます。一方、ASP.NET MVCはステートレス技術です)。RESTfulなWebサービスのステートレス化については、多くの場所で議論されています(たとえば この ブログスポット) がありますが、またSO 質問 .