将 UI 相关信息持久化到分层应用程序中的数据库
Posted
技术标签:
【中文标题】将 UI 相关信息持久化到分层应用程序中的数据库【英文标题】:Persisting UI Related info to the Database in a Layered App 【发布时间】:2011-05-05 06:54:07 【问题描述】:我和我的团队正在将我们的应用程序重构为分层应用程序。该应用程序是一个 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 的引用,它确实有对域模型的引用。
【问题讨论】:
你能说得更具体点吗?您需要存储哪些 UI 相关信息? UI 允许用户移动屏幕的各个部分。因此,诸如位置和坐标之类的东西。 【参考方案1】:您可以使用存储库模式(只需 google 即可)将您的实体持久保存在数据库中,但在这种情况下,这一层应该知道实体模型来持久保存它们
看看:
Repository Pattern vs DAL
对于 DTO,我认为您应该有一个类/层来负责在两侧构建对象:DTO 到 entityMode,反之亦然。服务层不应该知道如何创建对象,而是将其委托给另一层(组装器)
UI, Service Layer(SL),// Assembler //业务层(BLL) --//**Repository(DAL)
【讨论】:
以上是关于将 UI 相关信息持久化到分层应用程序中的数据库的主要内容,如果未能解决你的问题,请参考以下文章