【问题标题】:What is the use of a persistence layer in any application?在任何应用程序中,持久层有什么用?
【发布时间】:2013-04-07 14:48:45
【问题描述】:

我必须创建一个应用程序,要求我在应用程序中创建一个持久层。该应用程序位于.net 中。我已经创建了一个业务层和一个表示层,但我不知道我应该如何以及为什么要创建一个持久层。

我搜索了一下,发现持久层通常用于存储和检索数据库中的数据。

谁能详细解释一下?

【问题讨论】:

    标签: c# .net


    【解决方案1】:

    您在数据库引擎和业务/应用程序逻辑之间构建 DAL(数据访问层)或任何其他类型的中间层的原因是,通过在中间层添加此层,您可以隔离其余/上层您现在正在使用的特定数据库引擎/技术的应用程序。

    这有几个优点,比如更容易迁移到其他存储引擎,更好地将数据库逻辑封装在单层中(以后更容易替换或修改,具体取决于您设计的跨层接口等...)

    在这里查看我的答案,这是一个关于 ASP.NET MVC 和 EF 的示例,但解决方案和项目的结构实际上与技术无关:MVC3 and Entity Framework

    还可以阅读一些文章来更好地理解这件事,例如:http://www.developerfusion.com/article/84492/net-and-data-persistence/

    【讨论】:

      【解决方案2】:

      持久层也称为数据访问层或其他术语。

      它将获取和保存数据的核心与业务层分开。这样做的原因是您的业务逻辑(为您的数据操作执行繁重工作的应用程序部分)不与特定类型的数据源绑定。

      需要将数据层编写为特定于数据库。因此,如果您使用 MySQL 来访问所有数据,那么您将为此编写 dataLayer。

      如果您决定迁移到 MongoDB,而不是重写整个应用程序。您可以只重写数据访问部分以从 MongoDB 获取数据。由于业务逻辑并不关心您如何获取数据,只有您这样做,它和 Presenation 层才能保持原样。

      希望这会有所帮助。

      【讨论】:

      • 我们可以说我的存储库模式实现是我的持久层吗?
      【解决方案3】:

      用非常简单的术语来说,持久层是一种保存检索应用程序使用的项目的方法。

      一个简单的例子是你有一个代表一个人(姓名、年龄和性别)的类。当您的应用程序运行时,它保存在内存中。但是,假设您希望这些信息在您关闭并再次打开应用程序时可用。好吧,你需要一些方法来保存那个人,然后再检索它。这就是持久层的用武之地,它将把你的人写在“永久”的地方。

      这可能是数据库、平面文件、注册表,具体取决于生命周期和要求等。

      在您的持久层中,您将执行 CRUD(创建、读取、更新、删除)操作。通常针对数据库,以便您创建一个新人(Fred Bloggs)。假设他们更改了名称,您系统的其他用户可能会读取记录并更改为 Fred Migins 并更新数据库。然后该客户离开该国家/地区,因此您删除他们。

      【讨论】:

        【解决方案4】:

        持久性 = 将记录读/写/删除到磁盘或数据库。

        层 = 绝缘等

        持久层 = 通常意味着将读/写/删除逻辑与业务逻辑隔离开来。理想情况下,通过在业务逻辑和持久性模块之间放置几个(或单个)交互点。

        我认为这是我们都做过的事情(保存到磁盘、数据库等),这只是一个花哨的学术术语,他们只是要求我们这样做:

        1. 确保持久性部分很好地组合在一起,
        2. 理想情况下,业务逻辑(即网关模式)之间的交互点很少(或恰好单个),
        3. 所以将来我们可能希望切换数据库类型或主机(即更小的范围 - 我们只需要修改持久性部分以使其运行)。

        干杯,

        【讨论】:

          【解决方案5】:

          如果您没有将数据保存在某处,那么当您的应用再次打开时,它就不会再存在了。您可以按照您所说的将其保存到数据库(SQL、Oracle、PostGRE 等),或直接保存到磁盘(以二进制格式或纯文本等序列化)。

          使用层来做到这一点是一个很好的做法。它减少了耦合(即意大利面条式代码),并使维护变得更加容易。

          我建议您阅读有关 Hibernate 及其 .NET 表亲 NHibernate 的信息。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2021-07-13
            • 1970-01-01
            • 2011-10-22
            • 1970-01-01
            • 2011-06-14
            • 2010-11-06
            • 2016-09-12
            • 2011-06-03
            相关资源
            最近更新 更多