编程中的事件驱动(EDA)编程

举报
码乐 发表于 2024/02/02 20:13:19 2024/02/02
【摘要】 在经典的三层应用程序中,我们系统的核心是 data(base)。在事件驱动(EDA) 中,焦点转移到事件以及它们如何在系统中流动。这种转变使我们能够彻底改变设计应用程序的方式来解决上述问题。事件驱动的编程侧重于事件。最终,程序的流程取决于事件。 1 类型和事件本质类型 T 中的真和假事件定义。T 本身是 T 中的真事件。如果 T1→T2 是真事件(分别为假事件),则 T1 是假事件(返回真事...
在经典的三层应用程序中,我们系统的核心是 data(base)。

在事件驱动(EDA) 中,焦点转移到事件以及它们如何在系统中流动。

这种转变使我们能够彻底改变设计应用程序的方式来解决上述问题。

事件驱动的编程侧重于事件。最终,程序的流程取决于事件。

1 类型和事件本质

类型 T 中的真和假事件定义。T 本身是 T 中的真事件。

如果 T1→T2 是真事件(分别为假事件),则 T1 是假事件(返回真事件),而 T2 是真事件(假事件)。
如果 ∀X<:T1.T2 是真(分别为假)出现,则 T1 是假(分别为真)出现T2 为真(假)事件。

子类型语句 Γ |- S <: T中的肯定和否定出现的定义如下:类型SΓ中类型变量的边界是假。
类型 T 是一个真的事件。 “真”和“假”这两个词来自逻辑。

1.1 CH(库里·霍华德)对应关系

CH(库里·霍华德)对应关系,Curry-Howard对应关系是直觉命题逻辑与简单类型的lambda演算之间的同构,它将本来没有关系的学科联系在了一起。

类型理论与程序和计算相关,逻辑学与证明(论)相关,范畴论与模型(论)和代数学相关。

逻辑命题和类型对应关系

    命题 对应 类型
    逻辑中的命题,对应了lambda运算中的简单类型化 演算中的类型.
    
    证明 对应 程序实现
    逻辑中命题的证明,对应了lambda运算中的简单类型化 演算中的项(的类型断言)

    命题为真 对应 类型居留(即该类型存在合法的实现)

    命题的蕴含关系 对应 函数 (两者都可以记作 a -> b)

根据著名的命题和类型之间的 Curry-Howard 对应关系,类型 S→T 对应于逻辑命题 S ⇒ T,由逻辑蕴涵的定义,等价于 ¬S ∨ T。

子命题这里的 S 显然处于“否”位置——即在奇数内部否定的——当且仅当整个蕴涵出现在偶数内否定的数量。

请注意,T 中出现的正数对应于¬T 中出现否命题。

2 事件驱动简介

事件驱动架构 (EDA) 是一种软件架构范式,用于促进事件的产生、检测、消费和反应。

现代 Web 应用问题,过去从服务器提供静态HTML内容以来,基于Web的应用程序已经走了很长一段路。如今,应用程序变得更加复杂,并且使用多个框架、数据中心和技术。在过去的几年里,我们看到两个概念主导了IT市场:

	将我们的应用迁移到云;
	实施微服务架构;

这些想法塑造了我们设计和构建软件的方式.

到目前为止,我们处理的是顺序或并行执行模型,但具有事件驱动编程概念的模型称为异步模型。事件驱动的编程依赖于始终侦听新传入事件的事件循环。

事件驱动编程的工作取决于事件。一旦事件循环,事件就会决定要执行的内容和顺序。

下图将帮助您了解其工作原理 -

3 小结

本文介绍汇总了事件的本质含义和CH类型逻辑对应关系,这有助于理解。

从应用上看,事件是触发通知或应用程序状态的某种更改的操作。

灯已打开(通知),恒温器已关闭加热系统(通知),用户更改其地址(状态更改)或您的某个朋友更改了他的电话号码(状态更改)。

所有这些都是事件,但这并不意味着我们应该将它们添加到事件驱动的解决方案中。

要添加事件,该事件必须与业务相关。

例如python的Asyncio 模块是在 Python 3.4 中添加的,它提供了使用协程编写单线程并发代码的基础设施。

有兴趣了解更多的内容,请参考异步库函数汇总.

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。