List <>比ASP.Net中的UI层的DataSet更好吗?

Wah*_*tar 5 asp.net design-patterns data-access-layer list dataset

我想从我的数据访问层获取数据到我的业务层,然后准备在我的UI中使用.

所以我想知道:读取我的数据DataReader并使用它来填充List<BLClasses>或填充数据集并将数据集DataSet发送到UI层更好吗?

我对良好的性能和可扩展性感兴趣.

Rya*_*rle 7

您的UI层应该远离数据访问策略 - 它不应该处理原始数据.因此,您的UI应仅与您的域对象(直接或通过服务层)通信.

然后,您可以让UI层创建所需的数据结构以进行渲染.任何性能问题都可以通过缓存策略来缓解.

这会影响代码的可读性,可测试性和可维护性,这应该始终是任何设计的长期和短期目标.

我认为理想情况下你想要看到这些内容:

 UI
 /|\
  |
SERVICE (? depending on the design)
 /|\
  |
DOMAIN
 /|\
  |
 DCO
 /|\
  |
 DAL

编辑:

另一方面,如果您正在构建一个非常简单的WebForms应用程序,那么您可以放弃一些这种复杂性,只使用Visual Studio提供的设计器.但是,我发现,应用程序通常会超越拖放界面的功能而最终不得不重构为更加独立的设计.

您总是需要通过选择架构策略来了解您的收益/损失.如果你可以生活(在边缘)没有测试,降低可读性和更紧密的UI耦合到数据****颤抖****,那么也许更直接的方法适合你.

一些链接供进一步阅读


Joh*_*las 5

我不了解性能,但在维护和可读性方面,使用列表<>要好得多.

将数据集与数据表一起使用的一个大问题是,下一个处理代码的人在确定给定数据集中的表时会遇到很大的问题 - 特别是当你考虑很多人似乎有创建新数据的习惯时表并将它们添加到集合中以供以后使用.

对于一个对象列表,它是强类型和显式的,而且对象的结构是众所周知的,对属性的引用将随对象而改变.通常使用数据表,人们会求助于按索引引用列而不是名称是时间炸弹.

如果性能是一个问题,那么看看其他泛型集合,像字典这样的东西有非常好的密钥检索属性(显然几乎是n(1)),这可以在正确的位置产生巨大的影响.

显然,这是关于接口的讨论,并假设您知道如何公开对象功能.