在TPL Dataflow网络中流动的项目应该是DTO还是POCO?

时间:2014-06-28 15:18:33

标签: c# design-patterns poco dto tpl-dataflow

(现在我已经注意到了首字母缩写词......)

提出这个问题的一个更好的方法是:你应该何时使用DTO以及TPL数据流网络中的POCO ? (因为更好的选择可能取决于具体情况)。

我已经完成了两种方式,我不确定何时使用其中一种。处理逻辑应该在块中(即,传递给标准块的lambda)还是应该按照惯例封装在对象中?

(提醒一下,在POCO vs DTO question中讨论了DTO和POCO的内容。)

我倾向于大约70%的DTO流向网络,因为:

  • 在设计/编码数据流网络时,我的心智模型专注于多阶段转换管道 - 数据会再次转换和转换,然后再转换。重点是转换,而不是每种数据项的“行为”。我希望看到转换是作为一组(相对)小函数(lambdas)布局的,我可以一起浏览。

  • 流中的项通常不是应用程序的模型类的实例,它们通常只是在流中创建并在流结束时销毁的实例。 (有时他们的生活时间足够长,可以从一个街区转到另一个街区。)

另一方面:

  • 您有时可能会认为数据项正在进行连续转换,这会对包含行为的数据类产生影响。

  • 如果你在数据类中封装了行为,那么创建数据流块并将它们挂起就变成了样板(因为在块的lambdas中没有完成特定于数据的工作),因此你可以轻松地创建相当通用的构建器描述建立任何网络。

(我唯一相对肯定的是,不应该在一个网络中混合使用样式。)

但是我没有足够的经验可以制定任何指导方针来建议如何选择。我正在寻找这样的指导方针,或者需要考虑的pro / con参数。

2 个答案:

答案 0 :(得分:2)

这取决于您正在执行的处理类型,我认为TDF对此决定没有任何影响。

如果您正在执行的操作确实是项目的“方法”(例如Eat适用于Hamster),那么就拥有项目本身的逻辑。另一方面,如果项目和流程之间没有真正的关系(例如记录),项目只是“通过”一个块,然后在块的方法上有逻辑。

答案 1 :(得分:0)

Petri Net Tokens的基类应该是什么?

Object Nodes in UML Activity Diagrams的基类应该是什么?

任何课程都会

虽然你的问题很长,但对我来说,它属于同一个问题/答案类别