前言
本项目试图为复杂软件架构提供一种不同于传统面向对象的建模方式,并为之提供一套理论依据。
传统软件建模更擅长把系统理解为一组在空间中组织起来的对象、状态与关系。它通常从模块划分、对象归属、接口调用和状态持有出发,再去处理事件、同步、一致性、历史与反馈这些时间问题。
双世界理论则反过来。它更强调把系统理解为一个在时间中持续演化的过程:外部输入进入系统,被解释、被裁决、被纳入历史,形成新的事实版本,再被不同参与者感知、消费和响应。
因此,它并不关心对象本身,而是关心:
- 事件如何进入系统
- 事实如何形成
- 因果如何延续
- 历史如何保存
- 世界如何被感知和投影
这种建模方式被称为面向因果。关于它的精确定义、两层模型、裁决机制与一致性要求,参见核心概念。
对于需要长期运行、持续交互、不断吸收变化的系统,面向因果的建模方式会更直接、更简洁,同时具有更高的可扩展性和可维护性。