MVC体系结构中的模型/业务层/数据访问与存储库有什么区别?

初级

我想通过声明我是.NET Framework和ASP.NET的新手来开始我的问题。但是,我正在尝试学习ASP.NET 5 MVC6。我阅读了许多教程,以使自己快速入门。我从中学到的主要教程是“ 7天学习MVC

我认为我已经了解了整个MVC体系结构,但是有些术语/层使我感到困惑,即模型,业务逻辑层,数据访问层和视图模型。

这是我对MVC架构的整体理解“如果错误,请纠正我”

  • (M)模型:是代表数据库表的对象。数据库中的每个表都是一个模型。每个表中带有的每一列都是模型对象中的一个属性。举例来说,如果我有一个表称为“用户”与下面的列idfirstnamelastnameusername那么模型将被称为user和“ ”是属性。idfirstnamelastnameusername
  • (V)视图:通过将数据放入HTML页面将数据呈现给最终用户的方法。
  • (C)控制器:是路由引擎将调用的一层。控制器类对用户应该看到哪些数据/视图具有一些逻辑。例如,UsersControllerclass有一个称为的方法该方法Index()要求user模型提供一些数据,然后返回一个名为的视图ShowAllUsers

但是,模型似乎在其下还有另外三层

  • 视图模型:这似乎是一种将来自模型的原始数据转换为可显示的“视图就绪”格式的方法。例如,如果我们想向最终用户显示用户的全名,但在模型中没有全名作为属性。然后,我们在这一层创建一个新对象,该对象与模型对象相同,但具有一个附加的虚拟属性,称为全名。因此,我们现在可以在视图中显示obj.fullname。
  • 业务逻辑层
  • 数据访问层

另外,如果我想为我的控制器建立一个存储库,那么这里适合哪里呢?我确实知道这对于小型应用程序可能不是必需的,但是我只是想了解并学习正确的方法,然后我可以决定是否需要在我的应用程序中使用它。

我的问题是什么是业务逻辑层,什么是数据访问层?并且将在什么地方适合在这里?

我将举例说明。

以下摘录摘自MSDN上的一些教程,您可能会发现有帮助:

资料存取层

处理数据时,一种选择是将特定于数据的逻辑直接嵌入到表示层中(在Web应用程序中,ASP.NET页构成表示层)。这可以采用在ASP.NET页的代码部分中编写ADO.NET代码的形式,也可以采用标记部分中的SqlDataSource控件的形式。无论哪种情况,这种方法都将数据访问逻辑与表示层紧密耦合。但是,推荐的方法是将数据访问逻辑与表示层分开。该单独的层称为数据访问层

业务逻辑层

在第一个教程中创建的数据访问层(DAL)将数据访问逻辑与表示逻辑完全分开。但是,尽管DAL干净地将数据访问详细信息与表示层分开,但它没有实施任何可能适用的业务规则。例如,对于我们的应用程序,当“停产”字段设置为1时,我们可能希望不允许修改“产品”表的CategoryID或SupplierID字段,或者我们可能希望强制执行工龄规则,以禁止员工由在他们之后被雇用的人。另一个常见的情况是授权-也许只有具有特定角色的用户才能删除产品或更改UnitPrice值。在本教程中,我们

“代码项目”文章中,我发现对数据访问层目的的描述特别有用:

数据访问层为所有对数据库的调用提供了集中的位置,从而使将应用程序移植到其他数据库系统变得更加容易。

我还找到了这篇博文,它很好地说明了业务逻辑层如何与存储库集成:

在此处输入图片说明

最后,这是Microsoft对业务逻辑的定义

业务逻辑定义为与应用程序数据的检索,处理,转换和管理有关的任何应用程序逻辑;业务规则和政策的应用;并确保数据的一致性和有效性。为了最大化重用机会,业务逻辑组件不应包含任何针对用例或用户故事的行为或应用程序逻辑。

我希望可以对这些层提供自己的专家描述,但是我也正在学习这个主题,所以我想与大家分享我发现的内容,希望我们都可以从中学习一些东西。有关与这些图层有关的示例问题,请参阅我上面链接的教程。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Togaf 9.1:体系结构存储库和企业连续性之间有什么区别?

kappa体系结构和lambda体系结构有什么区别

Android体系结构组件中的AndroidViewModel和ViewModel有什么区别?

Kappa体系结构和仅使用流处理之间有什么区别?

ARM体系结构和ARM内核之间有什么区别?

具有MVC4 EF和存储库模式的N层体系结构

使用存储库模式的具有多个数据源的体系结构

android-模型类android体系结构中的会议室数据库连接

MVVM体系结构中的模型与MVC相比

如何防止MVC体系结构中的God模型类?

ASP.NET MVC中的业务逻辑层-体系结构

面向服务的体系结构中的业务数据查询/报告

MVC模式中的模型和实体有什么区别?

MVVM体系结构:一种模型-几种视图模型+数据访问位置

数据库和前端之间的独立API访问层的体系结构

MVC体系结构-将具有自定义逻辑的字段添加到模型

在Flux体系结构中,如何管理存储相同类型数据的存储?

ASP.NET MVC网站构建器系统的数据库体系结构

Android体系结构组件:如何通过ViewModel观察存储库中的LiveData

如何从缺少某些体系结构的存储库中安装软件包?

存储库模式和工作单元中的体系结构问题

如何从MVVM体系结构中的Web服务的存储库类与活动/片段进行通信

Node JS wirh控制器,服务和存储库中的体系结构

使用Alembic创建数据库表和在SQLAlchemy中定义模型之间有什么区别?

symfony2类和存储库体系结构

Android体系结构组件:如何插入存储库参数

域对象?业务对象?模型?域模型?有什么区别?

模型驱动的体系结构值得吗?工具中的最新技术水平是什么?

带有控制器的体系结构的名称,而非MVC的体系结构的名称