在任何应用程序中使用持久层有什么用?

时间:2013-04-15 13:10:16

标签: c# .net

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

我用Google搜索并了解到持久层通常用于存储和检索数据库中的数据。

有人可以详细解释一下吗?

5 个答案:

答案 0 :(得分:15)

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

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

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

另请阅读一些文章以更好地理解此事,例如:http://www.developerfusion.com/article/84492/net-and-data-persistence/

答案 1 :(得分:14)

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

它分离了从业务层获取和保存数据的勇气。这样做的原因是您的业务逻辑(应用程序中为数据操作提供繁重工作的部分)与特定类型的数据源无关。

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

如果您在某个时候决定转移到MongoDB,那么不要重写整个应用程序。您可以只重写数据访问部分以从MongoDB获取数据。由于业务逻辑并不关心如何获取数据,只有你自己,它和Presenation层可以保持不变。

希望这有帮助。

答案 2 :(得分:11)

简单来说,持久层可以是应用程序使用 SAVE RETRIEVE 项的方法。

一个简单的例子是你有一个代表一个人的类(姓名,年龄和性别)。在您的应用程序运行时,它保存在内存中。但是,如果您再次关闭并打开应用程序,则表示您希望获得该信息。好吧,你需要一些方法来保存那个人,然后再用 RETRIEVE 再来一次。这是持久层进入的地方,并将你的人写在某个“永久”的地方。

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

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

答案 3 :(得分:7)

持久性=读取/写入/删除磁盘或数据库中的记录。

Layer =绝缘等

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

我认为我们已经做了一些事情(保存到磁盘,数据库等),这只是一个奇特的学术术语,他们只是要求我们:

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

答案 4 :(得分:3)

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

使用图层来做这件事是一种很好的做法。它减少了耦合(即意大利面条代码),使维护更容易。

我建议你阅读Hibernate,它是.NET表兄,NHibernate。