【问题标题】:Should items flowing in a TPL Dataflow network be DTO or POCO?在 TPL 数据流网络中流动的项目应该是 DTO 还是 POCO?
【发布时间】:2014-06-28 15:18:33
【问题描述】:

(现在我用首字母缩写词引起了你的注意......)

也许更好的提问方式是:什么时候应该使用 DTO,什么时候应该在 TPL 数据流网络中使用 POCO? (因为更好的选择可能取决于具体情况)。

我用两种方式都做过,但我不确定何时使用一种与另一种。处理逻辑应该在块中(即传递给标准块的 lambda)还是应该像往常一样封装在对象中?

(提醒一下,POCO vs DTO question 中讨论了 DTO 和 POCO 是什么。)

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

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

  • 流程中的项目通常不是应用程序模型类的实例,它们通常只是在流程中创建并在流程结束时销毁的实例。 (有时它们的寿命只能从一个街区转移到另一个街区。)

另一方面:

  • 您有时可以将数据项视为正在经历连续转换,这会影响数据类封装行为。

  • 1234563描述构建任何网络。

(我唯一比较确定的是,样式不应该混合在一个网络中。)

但我没有足够多的经验来制定任何指导方针来建议如何选择。我正在寻找这样的指导方针,或要考虑的赞成/反对论点。

【问题讨论】:

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


    【解决方案1】:

    这取决于你正在执行什么样的处理,我认为TDF 对这个决定没有任何影响。

    如果您正在执行的操作确实是项目的“方法”(例如 Eat 是针对 Hamster),那么在项目本身上有逻辑。另一方面,如果项目和进程之间没有真正的关系(例如日志记录),并且项目只是“通过”一个块,那么在该块的方法上具有逻辑。

    【讨论】:

      【解决方案2】:

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

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

      任何课程都可以

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-06-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-04-21
        • 1970-01-01
        • 1970-01-01
        • 2014-08-31
        相关资源
        最近更新 更多