我想创建一个基于管道和过滤器的数据处理程序,它应该像这样处理传入的数据集,但不一定限于:
源管道(可以是来自数据库的数据集)< -sink-source->过滤(添加一个额外的字段)< -sink-source->过滤(操纵一些更多的数据/删除即使数据集无效)
我知道这样的架构在C / C ++中会是什么样子。但考虑到C ++ 11功能方面的所有好处,我希望这项任务能够以优雅的方式完成,以便能够:
答案 0 :(得分:7)
即将推出的C ++ 14标准中有一个草案涵盖了这一领域:
C++ Pipelines - ISO/IEC JTC1 SC22 WG21 N3534 = 2013-03-15
这是一个实现:
code.google.com/p/google-concurrency-library/source/browse/include/pipeline.h
答案 1 :(得分:3)
您所描述的是某种流式架构或管道架构。标准C ++没有这个特定的东西,但作为库作者,它为您提供了语言和标准库中必要的原语,以构建这样的体系结构。只需按照通常的面向对象编程创建类和接口,然后实例化它们并根据需要将它们连接到管道中。
例如,您可能有Source
接口和Sink
接口 - 以及同时实现Filter
和Source
的{{1}}抽象类作为实现Sink
和Pipe
的{{1}}类,只是直接传递数据。这只是命名和组织这样一个框架的众多方法之一。