存储库+ NHibernate + DTO

时间:2009-11-25 12:33:17

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

我有一个应用程序,在web层中有一个存储库层(和一个nhibernate实现),service(bussiness)层和一个asp.net mvc。

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

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

但另一方面,当我看到Fowlers DTO模式时,似乎映射是在域层中的某个地方使用汇编程序完成的?

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

非常感谢!

2 个答案:

答案 0 :(得分:3)

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

现在我们有AutoMapper。您是否将映射放在单独的程序集中,或者不由您自己决定。

答案 1 :(得分:1)

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

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

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

这会使你的MVC应用程序看起来像这样:

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

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

很多时候,当你在寻找最佳实践时,答案实际上是“它取决于。”。