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