事件驱动编程:为什么现在流行?
已发表: 2019-09-17事件驱动编程 (EDP) 正在改变软件开发服务的世界,并成为当今开发的一部分。 它的传播受到 Windows 和视觉 RAD 环境的传播的刺激。 顾名思义,编程方法侧重于事件。 后者可以是用户发起的、系统的和程序生成的。 当今 EDP 应用程序最常见的领域包括创建 GUI、服务器应用程序和多人游戏开发。
与控制用户选项和预先确定事件流的旧式程序不同,更具适应性和创新性的编程提出了图形用户界面 (GUI)。 GUI 通过以下拉菜单、窗口、按钮和复选框的形式为用户提供多个选项,从而改变了人机交互。 因此,用户不再遵循计算机设置的预定动作顺序,而是能够自己选择许多可用命令之一。
什么是事件驱动编程? 今天如何实施? 它对编码人员、企业和最终用户有什么好处和坏处? 这种软件开发方法有哪些可用的示例?
阅读我们与 LitsLink 联合创建的这份综合指南,以找到您可能感兴趣的所有内容。
- 什么是事件驱动编程?
- 事件处理作为 EDP 的核心
- 事件驱动应用的特点
- 事件驱动的编程语言
- 事件驱动编程的优点
- 事件驱动编程的缺点
- 事件驱动编程示例
什么是事件驱动编程?

虽然传统的编程是线性的并且基于执行流程,操作运行一个固定的跨度或直到达到预先编写的决策点,但事件驱动的编程是由某些事件触发的(例如,点击鼠标、按下某些键)在键盘上,从下拉菜单中选择一个选项)。 这种类型的编程最常见于具有图形用户界面 (GUI) 的程序。 如果使用它,程序会等待事件发生然后响应。
让我们处理一些介绍性术语,以便更好地了解 EDP。
- 事件:事件是程序生命周期中出现的条件,需要运行时系统执行一些操作。 事件本质上是不同的。 其中一些需要程序来检索和显示某些信息。 其他人启动一些计算并改变状态。
- 消息:消息是表示运行时事件的数据结构。 它提供有关事件类型和程序处理事件所需的参数的信息。
- 事件处理程序:事件处理程序是程序中的某个单元被激活以对事件做出反应。
- 消息循环:它是一种轮询算法,用于通过持续检查消息队列并将流量路由到事件处理程序来实现 EDP。
为您推荐:在 Apache Spark 中使用 Scala 的初学者指南。
事件处理作为 EDP 的核心

事件处理构成了 EDP 的基础,并将这种编程范式与其他范式区分开来。 遵循 EDP 基础的程序操作由计划事件、硬件事件、操作系统事件、语言运行时事件以及由通过与程序的 GUI 交互提供的用户指令触发的事件启动。 程序员在软件开发期间以事件处理程序的形式指定这些操作。 在最简单的意义上,编码人员必须回答这个问题,“当特定事件发生时应该发生什么?”
最基本的EDP模型是硬件模型。 它假定中央处理单元的操作被任何需要其响应的外部刺激中断。 在这种情况下,基本中断处理程序对事件的处理很少,而操作系统的高级功能保持不变。 然而,这个模型非常原始,没有消息队列,而现代 ODP 系统的功能不同。
软件工程中最古老的事件处理工具之一是回调函数。 它是基于中断向量表模型的 EDP 程序模型。 回调函数具有预先确定的接口,根据事件类型可能会略有不同。 事件类型是运行时计算事件在回调表中的位置的小整数。 消息循环在发现与该事件类型对应的队列头部的消息时调用回调函数。 对于要在 EDP 进程中执行的函数,执行此操作的编程语言应提供一种将事件与特定回调函数相关联的方法。
事件驱动应用的特点


基于事件的应用程序彼此不同,具体取决于它们的用途和功能。 然而,它们都必须拥有一套通用的功能,例如:
- 事件的抽象通常以 monad 的形式显式提供;
- 事件同步能力;
- 回调形式的持续传递样式实现;
- 原始事件的来源。
事件驱动的编程语言

可以使用任何现代编程语言创建事件驱动程序,而 Visual Basic、Visual C++ 和 Java 特别适合此目的。 例如,可视化编程语言 Visual C++ 和 Visual Basic 配备了集成开发环境 (IDE) 套件,其中包含大量标准控制选项、事件和事件处理程序代码模板。 Python 也被用作合适的 EDP 工具。
您可能会喜欢:编程简介:Node JS、Laravel、React、Ruby、Vue 和 Python 简介。
事件驱动编程的优势

这种软件编码方法对所有利益相关者都具有许多优势。 与控制台应用程序相比,它需要更少的编码决策。 许多事件是由用户操作决定的,而不是所有可能场景的预先编码。 当基于控制台的应用程序起作用时,事件驱动的应用程序会做出反应。 其次,它消除了无效值输入的可能性。 基于控制台的应用程序提出问题并允许用户键入答案。 基于事件的应用程序通常以按钮或下拉菜单的形式提供一组选项。
ODP 非常适合最近的软件工程趋势,例如云计算、微服务以及通过灵活的分布式系统增强可扩展性的需求。 ODP 的使用消除了在添加或删除某些模块时对现有代码进行更正和调整的需要。 无论进行任何此类调整,ODP 系统都会继续完美运行。 因此,程序员称赞 ODP 范式直观且非常适合具有基于复杂的内部和外部事件而不是结构的控制流的应用程序。 ODP 的其他好处包括:
- 使用面向对象编程作为其基础;
- 更好的软件设计成果;
- 结果程序的更好的响应性和灵活性;
- 由于跨多个处理器和事件处理程序的数据传播,处理速度更快;
- 改进的应用程序可扩展性;
- 更好的松耦合。
事件驱动编程的缺点

基于事件的编程最常被引用的缺点之一是复杂的控制流和手动堆栈管理。 由于这些缺点,这种编码方法不是简单的小型应用程序的最佳选择,因为这种努力是不合理的。
此外,应该记住,事件驱动编程并没有取代传统的结构化编程,而只是对其进行补充。 传统的编程技术对于编写实际程序仍然至关重要,而事件驱动的编码元素可能有助于设计 GUI。
ODP 的灵活性,其无可争辩的优势,在某些情况下也变成了一个缺点。 这种表现之一是 ODP 计划在发生变化和对整个系统的控制较弱的情况下的不可预测性。 虽然像 ODP 这样的编码器可以进行无摩擦的调整,例如删除或添加一些功能模块,但这些调整可能会导致功能上的意外更改。 在传统编程中,系统会立即检测到此类功能异常并将其原因报告给编码人员,而在 ODP 环境中,此类功能异常的检测速度较慢且更复杂。
您可能还喜欢: Elixir 编程语言的优缺点。
事件驱动编程示例

今天,事件驱动程序已变得非常普遍。 最流行的例子包括文字处理、绘图工具包、电子表格等。大多数现代消息传递系统也遵循事件驱动模式,而大型网站使用分布式性质的可扩展、事件驱动架构。 ODP 在现代多任务操作系统和各种编程框架中也占有一席之地。 凭借这些优势以及高度直观和灵活的调整,ODP 肯定会在消费者社区中保持高度流行的编码选项,希望从他们使用的软件中获得更多的定制和个性化。
