在TPL数据流网络中流动的项目是DTO还是POCO ?

本文关键字:项目 DTO 还是 POCO 数据流 TPL 网络 | 更新日期: 2023-09-27 18:10:43

(现在我用缩写词引起了你的注意…)

也许问这个问题的更好方法是:何时应该在TPL数据流网络中使用dto和poco ?(因为更好的选择可能取决于环境)。

两种方法我都用过,但我不确定什么时候该用哪一种。处理逻辑应该在块中(即,您传递给标准块的lambda)还是应该像往常一样封装在对象中?

(提醒一下,什么是DTO和POCO是在POCO和DTO的问题中讨论的。)

我倾向于70%的dto在网络中流动,因为:

  • 在设计/编码一个数据流网络时,我的心智模型集中在一个多阶段的转换管道上——数据被一次又一次地转换和转换。重点是转换,而不是每种数据项的"行为"。我希望看到转换被布置成一堆(相对)小的函数(lambdas),我可以一起浏览。

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

另一方面:
  • 您有时可以认为数据项正在经历连续的转换,这将对数据类封装行为产生影响。

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

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

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

在TPL数据流网络中流动的项目是DTO还是POCO ?

这取决于您执行的是哪种处理,我认为TDF对这个决定没有任何影响。

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

Petri网令牌的基类应该是什么?

UML活动图中对象节点的基类应该是什么?

任何类都可以

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