13.1.4 创建基本工作流操作F# PowerPack 库包含许多重要 I/O 操作的异步版本,但是,不可能包括所有。为此,F# 库还提供了构建自己的基本工作流操作的方法。如果操作要运行在工作流内部,使用的标准 .NET 模式,提供 BeginOperation 和 EndOperation 方法,可以使用 Async.FromBeginEnd 方法;如果把这两种方法作为参数,就会返回异步工作流。...
分类:
其他好文 时间:
2015-02-11 16:40:49
阅读次数:
192
13.1.3 理解工作流的运行从前一章我们知道,用计算表达式写的 F# 代码,会转换成使用基本操作的表达式,由适当计算生成器提供。对于异步工作流来说,let! 结构转换成对 async.Bind 的调用,return 转换成 async.Return;此外,异步工作流自动延迟,因此,计算本身打包装到额外的基本操作中,确保整个代码包含在一个函数中,这个函数在后面工作流启动时执行。清单 13.3 是清单...
分类:
其他好文 时间:
2015-02-10 23:15:25
阅读次数:
271
13.1.2 异步下载网页
在我们使用异步工作流来抓取网页内容之前,需要引用 FSharp.PowerPack.dll 库,它包含了许多 .NET 方法的异步版本。开发独立的应用程序时,可以使用添加引用命令;在这一章,我们将使用互动开发模式,因此,创建一个新的 F# 脚本文件,使用 #r 指令(清单 13.1)。
清单13.1 使用异步工作流写代码 (F# Interactive...
分类:
Web程序 时间:
2015-02-09 21:41:14
阅读次数:
211
13.1.1 异步工作流为什么重要?
假设我们要下载网页的内容,在应用程序中使用,我们可以使用 System.Net 命名空间下的 WebClient 类,但下不能演示我们需要解决的问题,运行复杂、长时间的操作。相反,我们将首先显式创建 HTTP 请求,然后,下载数据:
var req =HttpWebRequest.Create("http://manning.com");
v...
分类:
其他好文 时间:
2015-02-08 11:35:44
阅读次数:
218
第十三章异步和数据驱动编程
本章介绍
■异步工作流编程
■使用 F# Interactive 浏览数据
■使用度量单位定义类型
■处理与可视化数据
我们首先引述了一次对比尔 · 盖茨的采访,他谈到他感兴趣的编程任务的类型,并描述了编写应用程序的典型情况:
从 web 获取数据,不只是考虑把它当作文本,而且要引入结构,然后… …,尝试不同的数据表现方式,且以交互的方式。…...
分类:
其他好文 时间:
2015-02-03 17:15:59
阅读次数:
211
13.1 异步工作流
有许多地方需要用到异步操作,比如,使用磁盘、调用 web 服务,或者连接到数据库,异步工作流可能显著提高性能。当应用程序执行异步操作时,很难预测操作什么时候完成。如果不能正确处理异步操作,应用程序就会效率低下,甚至可能停止响应。
要使代码能够执行异步操作,不会阻止调用线程,避免出现问题是必要的,但是,使用当前的技术很难实现。在 F# 中,这极大地简化了,是因为有了异...
分类:
其他好文 时间:
2015-02-03 17:14:17
阅读次数:
239
异步使用 HTTP
到现在,我们所关注的还只是通过 HTTP 一次检索一个文档,或进行一次更新,在这种情况下,使用异步编程模式就没什么意义了。然而,我们通常的想法是一次能进行多个 HTTP 请求,这样,就可以从多个源检索、汇总数据,在这种情况下,使用 F# 的异步工作流,我们第一次碰到是在第十章“异步编程”一节,就能极大提高应用程序的性能。事实上,我们可能还希望能得到比使用本地磁盘更高的性...
分类:
其他好文 时间:
2014-05-24 21:02:10
阅读次数:
313