我可以使用一些具体的信息

我对有关编程中无状态和有状态设计的具体信息的文章感兴趣。 我很感兴趣,因为我想更多地了解它,但我真的找不到任何有关它的好文章。 我已经阅读了几十篇关于Web的文章,这些文章模糊地讨论了这个主题,或者他们正在讨论Web服务器和会话 - 这也是'有状态与无状态',但我对编码中属性的状态设计和状态设计感兴趣。 例子:我听说BL-class是无状态的,由设计,实体类(或至少我称之为 - 像Person(id,name,..))是有状态的等等。

我认为重要的是要知道,因为我相信如果我能理解它,我可以编写更好的代码(例如粒度)。

无论如何,真的很短,这就是我所知道的'有状态vs无状态':

有状态(如WinForms):存储数据以供进一步使用,但限制了应用程序的可伸缩性,因为它受CPU或内存限制

无状态的(像ASP.NET一样 - 尽管ASP试图使用ViewState进行状态化):完成操作后,数据被传输,实例被传回线程池(Amorphous)。

正如你所看到的,它非常模糊和有限的信息(并且非常专注于服务器交互),所以如果你能给我提供一些更美味的信息,我会很感激:)


我建议你从StackOverflow中的一个问题开始,讨论无状态编程的优点。 这更多的是在函数式编程的背景下,但你会阅读的内容也适用于其他编程范例。

无状态编程与函数的数学概念有关,当用相同的参数调用时,总是返回相同的结果。 这是函数式编程范例的一个关键概念,我希望您能在该领域找到许多相关文章。

您可以研究以获得更多理解的另一个领域是RESTful Web服务。 这些设计是“无状态的”,与其他网络技术相比,它们试图以某种方式保持状态。 (事实上​​,你说ASP.NET是无状态的是不正确的 - ASP.NET尝试使用ViewState保持状态,肯定被定性为有状态。另一方面,ASP.NET MVC是一种无状态技术。 有很多地方讨论RESTful Web服务的“无状态”(如本博客文章),但您可以再次从SO问题开始。


状态的应用程序是一种存储有关自运行以来发生或更改的信息的应用程序。 任何有关它所处“模式”的公共信息,或处理了多少记录等等,都会使其成为有状态的。

无状态应用程序不会公开任何信息。 他们每次都对相同的请求,函数或方法调用给出相同的响应。 HTTP在其原始形式中是无状态的 - 如果你对特定的URL进行了GET,每次都会得到(理论上)相同的响应。 当然,例外情况是,我们开始在顶部添加有状态,例如使用ASP.NET Web应用程序:)但是,如果您想到仅包含HTML文件和图像的静态网站,您就会明白我的意思。


无状态意味着没有过去的记忆。 每一笔交易都是在第一次完成时完成的。

有状态意味着有过去的记忆。 以前的交易被记住并可能影响当前的交易。

  Stateless:

     //The state is derived by what is passed into the function

        function int addOne(int number)
        {
        return number + 1;
        }

  Stateful:

     //The state is maintained by the function

        private int _number = 0; //initially zero

        function int addOne()
        {
        _number++;
        return _number;
        }

请参阅:https://softwareengineering.stackexchange.com/questions/101337/whats-the-difference-between-stateful-and-stateless

链接地址: http://www.djcxy.com/p/41135.html

上一篇: I could use some concrete information

下一篇: Pagination in a REST web application