2009-11-25 49 views
2

我有一個存儲庫層(和NHibernate的實現),服務(經營業務)層,並在網層一個asp.net MVC的應用程序。庫+ NHibernate的+ DTO

因爲我還需要創建一個小的Silverlight應用程序,我將創建幾個WCF服務。這呼籲使用DTO的,但我不知道如何在哪裏創建它們。

我見過一些鏈接(like this one),所以它似乎dto的自然地方和映射過程是在我的數據/存儲庫層的某處?

但在另一方面,當我看着福勒DTO模式似乎映射與領域層的地方彙編做了什麼?

我很困惑......實現這一目標的最佳實踐是什麼?

非常感謝!

回答

3

此鏈接有點過時,不是嗎?它只是一個很酷的東西,而不是一個自然的做DTO的方法。

現在我們有AutoMapper。你會把映射放在一個單獨的程序集中嗎?這是由你決定的。

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更加一致。

很多時候,當你正在尋找一個最佳實踐,答案是真的「這要看情況。」。