编程中的事件驱动(EDA)编程
在经典的三层应用程序中,我们系统的核心是 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 中添加的,它提供了使用协程编写单线程并发代码的基础设施。
有兴趣了解更多的内容,请参考异步库函数汇总.
- 点赞
- 收藏
- 关注作者
评论(0)