2

我有一个带有存储库层(和一个休眠实现)、服务(业务)层和 web 层中的 asp.net mvc 的应用程序。

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

我看过一些链接(比如这个),所以看起来 dto 和映射过程的自然位置是在我的数据/存储库层的某个地方?

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

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

非常感谢!

4

2 回答 2

3

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

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

于 2009-11-25T13:04:25.617 回答
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 从业务层接口的角度来看更加一致。

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

于 2009-11-27T11:52:43.063 回答