我必须创建一个应用程序,要求我在应用程序中创建持久层。该应用程序位于.net。我创建了一个业务层和一个表示层,但我不知道应该如何以及为什么要创建一个持久层。
我用Google搜索并了解到持久层通常用于存储和检索数据库中的数据。
有人可以详细解释一下吗?
答案 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 =绝缘等
持久层=通常意味着将读/写/删除逻辑与业务逻辑隔离开来。理想情况下,通过在业务逻辑和持久性模块之间放置一些(或单个)交互点。
我认为我们已经做了一些事情(保存到磁盘,数据库等),这只是一个奇特的学术术语,他们只是要求我们:
干杯,
答案 4 :(得分:3)
如果您没有在某个地方保存数据,那么当您的应用再次打开时,它就不会再存在。您可以将其保存到数据库(如SQL,Oracle,PostGRE等),或直接保存到磁盘(以二进制格式或纯文本等序列化)。
使用图层来做这件事是一种很好的做法。它减少了耦合(即意大利面条代码),使维护更容易。
我建议你阅读Hibernate,它是.NET表兄,NHibernate。