在MVP(或任何架构)中,数据转换发生在哪里?

时间:2011-05-12 11:22:23

标签: architecture

我有一个MVP应用程序,它有以下几层:

  • 演示
  • 服务
  • 商业
  • 数据

在演示层和服务层之间,我使用DTO。

假设我使用L2S或EF从数据库中获取数据。我得到一个可以是int或datetime等的dataype。但是表示层需要它作为字符串或某种格式。这究竟发生在哪里?

服务是否这样做? DTO?主持人?其他地方?

2 个答案:

答案 0 :(得分:0)

转换有两种类型。

将数据库字段转换为有用的数据模型对象(可能在您的业务层中),并将模型数据转换为某种表示对象。

前者会将数据库中的BIT字段转换为模型中的Boolean

后者会在演示文稿中将DateTime转换为可见字符串。

这两个转换发生在数据提取点和表示渲染点。

答案 1 :(得分:0)

  

但表示层需要它   字符串或某种格式。

如果表示层(UI)需要以某种格式(否则它无法互操作),那么你别无选择,只能转换它 - 但转换很可能是UI具体;在这种情况下,最好的选择(灵活性/关注点分离)是构建一个UI特定的适配器/代理/外观(进行转换),它位于UI和获取数据之间。

这适用于您可以控制整个系统的场景 - 除了UI。

我在你的问题中读到的一个可能的微妙之处并不是UI要求它采用特定的格式,而是我们应该以特定的格式“强烈地喜欢”它;在这种情况下,您将构建适配器/代理到UI中。

这适用于您控制UI但不控制应用程序其余部分的情况。在你的场景中听起来并非如此 - 但值得一提。