我目前正在从事一个涉及索引大量文件(240k)的研究项目;它们主要是 html、xml、doc、xls、zip、rar、pdf 和文本,文件大小从几 KB 到超过 100 MB。
提取所有 zip 和 rar 文件后,我最终得到一百万个文件。
我正在使用支持 TPL Dataflow 和 Async CTP V3 的 Visual Studio 2010、C# 和 .NET 4.0。为了从这些文件中提取文本,我使用 Apache Tika(使用 ikvm 转换)并使用 Lucene.net 2.9.4 作为索引器。我想使用新的 TPL 数据流库和异步编程。
我有几个问题:
如果我使用 TPL,我会获得性能优势吗?它主要是一个 I/O 过程,据我了解,当您大量使用 I/O 时,TPL 不会提供太多好处。
生产者/消费者方法是否是处理此类文件处理的最佳方式,还是有其他更好的模型?我正在考虑使用阻塞集合创建一个具有多个消费者的生产者。
TPL 数据流库对这种类型的流程有用吗?似乎 TPL 数据流最适合用于某种消息传递系统......
在这种情况下我应该使用异步编程还是坚持同步?