数据驱动与事件驱动的模型/架构有何区别?

12
我曾经从不同的人那里听到过 "Data Driven" 和 "Event Driven" 这两个术语。我尝试通过谷歌搜索了解这些术语,但它们仍然对我来说很模糊,因为它们看起来非常相似。 数据驱动编程(Data driven programming)是一种编程模型,其中数据本身控制程序的流程(而不是程序逻辑),而在事件驱动编程(Event driven programming)中,则是事件而不是数据本身控制着程序的流程。
据我理解,事件也是数据。例如,在基于员工的Web应用程序中,如果用户点击“创建员工”按钮,则此处事件是创建员工(这也是一种数据),而数据是与员工相关的信息。
现在在服务器上,首先是事件决定程序的流程,然后数据(员工相关信息)也会控制执行的流程,例如,如果是永久性员工则会执行不同的方法,而如果是临时员工则会执行不同的方法。
所以难道不是每件事都是数据驱动架构吗?如果不是,它们之间有什么区别?任何基于Web的示例都将有所帮助。
2个回答

23
数据本身控制程序的流程(而不是程序逻辑)
我想你可能还没有完全理解这个上下文中“流程”是什么。在这里,“流程”即是逻辑。例如,如果您执行一些方法对其参数执行 A,然后 B,然后 C,则逻辑将是“应用 A,B,C”,并且如果将操作 A,B,C 提取到单独的方法中,则流程将是相同的。因此,流程和逻辑是同义词。 数据驱动编程表示存在一些通用代码。它不包含任何业务逻辑,也不控制流程。它只是一个工具,用于读取和处理数据并输出结果。控制流程和逻辑的是数据本身。因此,如果要更改业务逻辑(实际上更改程序结果),则更改数据而不是代码。
而您的代码,嗯,它是一种管道,根据输入数据执行命令。您可以将这样的代码视为 JavaScript 中的 eval 函数。
事件驱动编程中,逻辑由事件控制。这意味着数据仅仅是数据,所有业务规则都放置在代码中。事件将携带某些数据,并且根据事件的数据可以更改逻辑,但是这里的区别在于更改逻辑规则所放置的位置——是在数据中还是在代码中;在 EDP 的情况下,逻辑在代码中。
此外,请查看这个问题,一些答案可能会阐明该主题。

非常好的答案!因此我们可以说EDP只是过程式编程,而DDP只是面向对象编程。 - Max

2
上面的解释非常恰当。为了补充上面的答案,在数据驱动架构中,业务可以直接在数据表中提供逻辑,从而使控制下游组件中的逻辑变得非常容易。通常使用用户友好的工具进行馈送。通常会维护一个产品主文件,其中包含数据变量,并根据业务需求进行更新。与事件驱动相比,这样做对于业务来说非常容易,并且可以节省大量成本,因为每个业务需求的微小变化都会导致开发-测试-部署软件的巨大成本。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接