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