我必须创建一个应用程序,要求我在应用程序中创建持久层.该应用程序位于.net.我创建了一个业务层和一个表示层,但我不知道应该如何以及为什么要创建一个持久层.
我用Google搜索并了解到持久层通常用于存储和检索数据库中的数据.
任何人都可以详细解释一下吗?
Dav*_*ras 20
您在数据库引擎和业务/应用程序逻辑之间构建DAL(数据访问层)或任何其他类型的中间层的原因是,通过在中间添加此层,您可以将应用程序的其余/上层与您正在使用的特定数据库引擎/技术.
这有几个优点,例如更容易迁移到其他存储引擎,在单个层中更好地封装数据库逻辑(以后更容易替换或修改,具体取决于您设计跨层接口的程度等...)
在这里看到我评价最高的答案,它是关于ASP.NET MVC和EF的一个例子,但解决方案和项目的结构实际上是技术无关的:MVC3和实体框架
另请阅读一些文章以更好地了解此事,例如:http://www.developerfusion.com/article/84492/net-and-data-persistence/
Ken*_*rza 16
持久层,也称为数据访问层或其他术语.
它分离了从业务层获取和保存数据的勇气.这样做的原因是您的业务逻辑(应用程序中为数据操作提供繁重工作的部分)与特定类型的数据源无关.
需要将数据层编写为特定于数据库.因此,如果您使用MySQL访问所有数据,那么您将编写dataLayer用于该用途.
如果在某些时候您决定转移到MongoDB,那么而不是重写整个应用程序.您可以只重写数据访问部分以从MongoDB获取数据.由于业务逻辑并不关心如何获取数据,因此只有您这样做,它和Presenation层才能保持不变.
希望这可以帮助.
Bel*_*gix 12
简单来说,持久层是一种SAVE和RETRIEVE应用程序使用的项目的方法.
一个简单的例子就是你有一个代表一个人的类(姓名,年龄和性别).在您的应用程序运行时,它保存在内存中.但是,如果您再次关闭并打开应用程序,则表示您希望获得该信息.好吧,你需要一些方法来保存那个人,然后再重新检索它.这是持久层进入的地方,并将你的人写在某个"永久"的地方.
这可能是一个数据库,一个平面文件,注册表取决于生命周期和要求等.
在持久层中,您将执行CRUD(创建,读取,更新,删除)操作.通常针对数据库,因此您将创建一个新人(Fred Bloggs).假设他们更改了他们的名字,系统的另一个用户可能会读取记录并更改为Fred Miggins并更新数据库.然后该客户离开该国家,以便您删除它们.
持久性=读取/写入/删除记录到磁盘或数据库。
层=绝缘层等
持久层=通常意味着将读/写/删除逻辑与业务逻辑隔离。理想情况下,通过在业务逻辑和持久性模块之间放置几个(或单个)交互点。
我认为我们已经做完了(保存到磁盘,数据库等),这只是一个花哨的学术术语,他们只是在要求我们:
干杯,
如果您没有将数据保存在某个地方,那么当您再次打开应用程序时,这些数据将不再存在。您可以将其保存到数据库,如您所说(SQL、Oracle、PostGRE 等),或直接保存到磁盘(以二进制格式序列化或纯文本等)。
使用图层来做到这一点是一个很好的做法。它减少了耦合(即意大利面条式代码),并使维护变得更加容易。
我建议您阅读有关 Hibernate 的内容,它是 .NET 的近亲 NHibernate。