将 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 相关信息持久化到分层应用程序中的数据库的主要内容,如果未能解决你的问题,请参考以下文章

分层开发——软件系统的分层开发

UI自动化项目分层设计思想(po模式)

接口相关概念

如何自定义显示分层模型中的详细信息的搜索建议UI

数据访问层

缓存中应注意的问题