【问题标题】:Repository + NHibernate + DTO存储库 + NHibernate + DTO
【发布时间】:2010-12-20 06:40:21
【问题描述】:

我有一个应用程序,其中包含存储库层(和一个 nhibernate 实现)、服务(业务)层和 web 层中的 asp.net mvc。

因为我还需要创建一个小的 silverlight 应用程序,所以我将创建几个 wcf 服务。这要求使用 DTO,但我不知道如何以及在哪里创建它们。

我已经看到了一些链接 (like this one),所以 dto 和映射过程的自然位置似乎在我的数据/存储库层中的某个地方?

但另一方面,当我查看 Fowlers DTO 模式时,似乎映射是由域层某处的汇编程序完成的?

我很困惑...实现这一目标的最佳做法是什么?

非常感谢!

【问题讨论】:

    标签: asp.net-mvc nhibernate repository-pattern dto


    【解决方案1】:

    这个链接有点过时了,不是吗?而且它只是提供了一种很酷的东西,而不是一种自然的 DTO 方式。

    现在我们有AutoMapper。您是否会将映射放在单独的程序集中,这取决于您。

    【讨论】:

      【解决方案2】:

      从概念上讲,DTO 通常位于数据层(因为 DTO 依赖于数据层)和业务层(如果 DTO 用于将业务层与数据层隔离)之间。

      如果您的 Silverlight 应用程序要使用您的业务层,它看起来应该是这样的:

      Silverlight -> WCF -> BL -> DTO -> DL -> DB

      这会让你的 MVC 应用看起来像这样:

      ASP.NET MVC -> BL -> DTO -> DL -> DB

      也就是说,实际上并没有一种“正确”的方法可以做到这一点。在任一应用程序中,如果符合您的要求,您可以绕过您的业务层和/或 DTO。您可以让您的 ASP.NET MVC 应用程序与您的 WCF 层对话,以使 UI 从业务层接口的角度来看更加一致。

      很多时候,当您在寻找最佳实践时,答案实际上是“视情况而定”。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多