您已经到达了第1章的末尾,本章介绍了使用函数式思考和响应式处理实现域模型的基本概念。为什么我们要一起讨论这两种模式呢?他们是否比你今天在编程中使用的技术更匹配?让我们回顾一下本章所探讨的一些概念。

您实现并交付给客户的任何应用程序都需要响应。正如您所看到的,响应性模型对故障、变化负载和并发性提供了响应。为了使您的模型可以对失败响应,您需要在体系结构中构建弹性。你可以通过对模型进行适当的模块化并确保一个组件的失败不会导致整个系统崩溃。故障需要单独处理,而不是与领域逻辑耦合。即使面对不同的负载,保持模型具有响应性的一种方法是使其成为事件驱动的----执行的主线从未被阻塞。因此用户请求从未停止过,即使有些请求可能正在执行一些重负荷的处理以服务于其他请求。事件是一种小型的、不可变的抽象,带有执行处理的目的并通过事件循环(event loop)处理。循环得到的每个事件都被派生给一个执行实际任务的事件处理程序。

响应式模型意味着代码的良好模块化,这样各种事件处理程序就可以独立运行,并且可以执行领域行为。而且,只有在它们之间没有(或最小)共享状态的情况下,才可以独立地运行进程。函数式编程从一开始就鼓励这种实践。纯粹的功能设计和纯粹逻辑的解耦,是函数性思维最重要的两个基本原则。这就是函数与响应性的化学反应。纯粹的、引用透明的模块作为事件处理程序可以并发运行来执行领域逻辑,使您的模型具有响应性和可伸缩性。纯粹的逻辑尺度和副作用是没有的,当你把函数思考和响应性建模结合在一起时,你就会得到很多东西。

results matching ""

    No results matching ""