我对包含有关编程中无状态和有状态设计的一些具体信息的文章感兴趣。我很感兴趣,因为我想了解更多有关它的信息,但我真的找不到任何关于它的好文章。我在网上读过几十篇文章,这些文章模糊地讨论了这个主题,或者他们正在谈论 Web 服务器和 session - 这也是关于有状态与无状态的,但我对编码中属性的无状态与有状态设计感兴趣。示例:我听说 BL 类在设计上是无状态的,实体类(或者至少我是这样调用它们的 - 比如 Person(id, name, ..))是有状态的,等等。
我认为了解这一点很重要,因为我相信如果我能理解它,我就可以编写更好的代码(例如考虑到粒度)。
无论如何,很短,这是我对有状态与无状态的了解:
有状态(如 WinForms):存储数据以供进一步使用,但限制了应用程序的可扩展性,因为它受到 CPU 或内存限制
无状态(如 ASP.NET - 尽管 ASP 尝试通过 ViewStates 实现有状态): 操作完成后,数据将被传输,实例将被交回线程池(非晶态)。
正如您所看到的,这是非常模糊且有限的信息(并且非常关注服务器交互),因此如果您能为我提供一些更有趣的信息,我将非常感激:)
最佳答案
无状态意味着没有过去的内存。每笔交易的执行就像第一次完成一样。
有状态意味着有过去的内存。以前的交易会被记住,并可能影响当前的交易。
无状态:
// 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;
}
关于terminology - 无状态与有状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5329618/