我想通过声明我是.NET框架和ASP.NET新手来开始我的问题。但是,我正在尝试学习ASP.NET 5 MVC 6.我已经阅读了很多教程以帮助我提高速度。我从中学到的主要教程是" Learn MVC in 7 Days"
我认为我得到了MVC
架构,但是有些术语/层让我感到困惑,例如模型,业务逻辑层,数据访问层和视图模型。
以下是我对MVC架构的全面理解"如果错误请纠正我"
id
,firstname
,lastname
和username
,该模型将被称为user
和" id
,{ {1}},firstname
和lastname
"是属性。username
类有一个名为UsersController
的方法,它从Index()
模型中请求一些数据,然后返回一个名为user
的视图。然而,Model似乎还有另外3层,就像这样
此外,如果我想为我的控制器设置repository,那么这适合哪里?我明白这可能不适用于小型应用程序,但我只是想了解并学习正确的方法,然后我可以决定是否需要在我的应用程序中使用。
我的问题是什么是业务逻辑层,什么是数据访问层? repository在哪里适合?
我将以一个例子来解释。
答案 0 :(得分:1)
以下摘录摘自MSDN上的一些教程,您可能会对此有所帮助:
使用数据时,一个选项是将特定于数据的逻辑直接嵌入到表示层中(在Web应用程序中,ASP.NET页面构成表示层)。这可以采用在ASP.NET页面的代码部分中编写ADO.NET代码或使用来自标记部分的SqlDataSource控件的形式。在任何一种情况下,这种方法都将数据访问逻辑与表示层紧密耦合。但是,推荐的方法是将数据访问逻辑与表示层分开。该单独的层称为数据访问层
第一个教程中创建的数据访问层(DAL)将数据访问逻辑与表示逻辑完全分开。但是,虽然DAL将数据访问详细信息与表示层完全分开,但它不会强制执行可能适用的任何业务规则。例如,对于我们的应用程序,我们可能希望在Discontinued字段设置为1时禁止修改Products表的CategoryID或SupplierID字段,或者我们可能希望强制执行资历规则,禁止员工管理的情况被他们雇用的人。另一种常见方案是授权 - 也许只有特定角色的用户才能删除产品或者可以更改UnitPrice值。 在本教程中,我们将了解如何将这些业务规则集中到业务逻辑层(BLL)中,该层充当表示层和DAL之间数据交换的中介。
从Code Project article,我发现数据访问层的这种描述的目的是提供特别丰富的信息:
数据访问层为所有对数据库的调用提供了一个集中位置,因此可以更轻松地将应用程序移植到其他数据库系统。
我还找到了this blog post,它可以很好地说明业务逻辑层如何与存储库集成:
最后,这是Microsoft对business logic:
的定义业务逻辑被定义为与应用程序数据的检索,处理,转换和管理有关的任何应用程序逻辑;业务规则和政策的应用;并确保数据的一致性和有效性。为了最大化重用机会,业务逻辑组件不应包含特定于用例或用户故事的任何行为或应用程序逻辑。
我希望我能提供我自己对这些层次的专家描述,但我也在学习这个主题,所以我想我会分享我发现的东西,希望我们都能从中学到一些东西。例如,与这些图层相关的问题,请参阅我上面链接的教程。
答案 1 :(得分:1)
首先让我们谈谈分层架构的工作原理:
这个想法很简单。顶层取决于下一层。因此,表示层取决于业务层,业务层取决于数据层。换句话说,业务层定义业务逻辑并为Presentation层提供接口,数据层定义数据访问逻辑并为业务层提供接口
现在让我们讨论一下什么是MVC:
也请检查以下答案: