16 第十六章 开发有响应的函数式程序

728 篇文章 1 订阅
 

16 第十六章 开发有响应的函数式程序


本章讨论

■ 响应事件,及在 F# 中的声明

■ 事件作为第一类值使用

■ 用异步工作流编程 GUI

■ 使用消息传递并发

 

    这最后一章是关于响应外部事件的,比如用户输入。我们还将讨论另一个 F# 功能,可用于创建并发程序。尽管这些听起来好像不相关的主题,但是,会看到探索它们的相似之处。本章中看到的所有库和示例,都共享一个相似的体系结构,因此,我们先看一下通常的有响应的体系结构。

    我们写的很多代码(命令式和函数式编程两种),假定它是在驾驶座位上,即,每一步发生什么,都在我们的控制之中。这种模式往往被用户界面所打破。一个 Windows 应用程序需要处理各种用户界面事件:它也可能作出回应,以完成异步 web 服务请求或后台任务。这种类型的应用程序的执行由事件控制,应用程序只关心对它们的反应。出于此原因,这一原则有时被称为控制反转(inversion of control),有时轻易被称为好莱坞原则(the Hollywood Principle)[1]。

    响应式代码标准的 .NET 机制是事件。订阅服务器添加事件处理程序,在事件触发时调用。事件处理程序需要可变状态,保持对订阅的跟踪,这与函数式原则是有点背道而驰,但它是最简单的方法,被许多现有的 .NET 类所使用。我们已经看到过如何在 Windows 窗体应用程序中使用它,所以,这里的讨论会相当简单。相反,我们将重点讨论一些由 F# 提供的更加函数式的方法。

    我们首先看一下处理事件的声明式方式,这有点类似于声明式列表处理。然后,再看一下用异步工作流来处理事件,这种方法与控制反转完全相反,它以我们至少出现的方式写代码,来控制应用程序做什么。最后,我们会考虑在响应式的应用程序中的状态管理,和消息传递的并发性,这是写多线程应用程序的一项强大技术。

 

-----------------

[1] 不要给我们打电话,我们会打电话给你。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值