我和我的团队正在将我们的应用程序重构为分层应用程序。该应用程序是一个Windows应用程序,组织有UI,服务层(SL),业务层(BLL)和数据访问层(DAL)。我们的目标是将应用程序逻辑保留在服务层中,将域逻辑保留在业务层中,并使用DTO在服务层和UI之间进行通信。话虽如此,我的问题涉及存储在数据库中的UI特定数据。
例如(具有5个电话号码的屏幕,用户可以选择这些电话号码显示在屏幕上的位置{1,2,3,4或5})。在我的域模型中,我有一个名为Phone
的权利public class phone{
string name;
string number;
string extension;
etc...
}
在服务层中,我有一个看起来像这样的DTO名称phoneDTO
public class phoneDTO{
string name;
string number;
string extension;
int position;
etc...
}
通常,我将DTO传递给服务层,让服务层从域模型创建对象,然后调用相应的DAL映射器。
问题:在保留UI相关信息时,这样做的最佳做法是什么?在我的情况下,DAL没有对DTO的引用,它确实引用了域模型。
答案 0 :(得分:1)
你可以选择存储库模式(只是google)来保存数据库中的实体,但在这种情况下,这个层应该知道实体模型以保留它们
看看:
对于DTO,我认为你应该有一个类/层负责在两侧构建对象:DTO到entityMode,反之亦然。服务层不应该知道如何创建对象,而是将其委托给另一个层(汇编程序)
用户界面,服务层(SL),// 汇编程序 //业务层(BLL) - // **存储库(DAL)