官术网_书友最值得收藏!

Stateless versus stateful

Pure functions and referentially transparent expressions are stateless. A piece of code is stateless when its outcomes are not influenced by previous events. For example, the results of the isIndexPage function will not be influenced by the number of times that we invoke it, or by the moment in time when we invoke it.

The opposite of stateless code is stateful code. Stateless code is very difficult to test and becomes a problem when we are trying to implement scalable and resilient systems. Resilient systems are systems that can handle server failures; there is usually more than one instance of a service, and if one of them crashes, others can continue handling traffic. Also, new instances are created automatically after one of the instances has crashed. This becomes very difficult if our servers are stateful because we need to save the current state before a crash and restore the state before we spin up a new instance. The whole process becomes much simpler when we design our servers to be stateless.

With the arrival of the cloud computing revolution, these kinds of system have become more common, and this has led to an interest in functional programming languages and design principles because functional programming encourages us to write stateless code. The opposite can be said of OOP because classes are the main construct in OOP applications. Classes encapsulate state properties that are then modified by methods, which encourages methods to be stateful and not pure.

主站蜘蛛池模板: 黔南| 葫芦岛市| 靖西县| 锡林郭勒盟| 哈密市| 刚察县| 张家口市| 永兴县| 赤水市| 安国市| 海口市| 方正县| 根河市| 那坡县| 遂平县| 儋州市| 来安县| 清镇市| 桂平市| 台安县| 云梦县| 昆山市| 扶余县| 林口县| 英德市| 错那县| 枣庄市| 东源县| 延津县| 南投县| 吉水县| 通州市| 武胜县| 乐山市| 巨野县| 凌海市| 资溪县| 凤庆县| 成安县| 天镇县| 门源|