Uza*_*aar 1 c# asp.net-mvc entity-framework asp.net-mvc-3
我在我的应用程序中使用 ASP.NET MVC。我将我的应用程序分为三层架构。1) 数据访问层(使用实体框架),2) 应用程序/业务层,3) 表示层 (ASP.NET MVC)。
因为我在表示层上使用 MVC 框架,所以我对业务逻辑感到困惑。我需要知道在 MVC 模式中将业务逻辑放在哪里。换句话说,我们可以说我需要从哪里调用我的中间层。来自模型还是来自控制器?
如果我从控制器调用我的业务逻辑,那么模型似乎毫无用处。否则,如果我从模型调用业务逻辑,那么系统似乎没有必要这样做,因为业务对象与模型映射,然后模型被传递到控制器。模型所做的正是 DTO 正在做的事情。
任何帮助将不胜感激
ASP.NET MVC层或层既不包含业务逻辑也不包含业务模型。MinMVC代表 UI 模型,而不是应用程序核心的模型,并且MVC(以及其他MV*模式)通常是用于分离 UI 关注点的模式。您应该从控制器发送消息(调用)您的业务层 (BL)、聚合数据、创建结果或将其映射到 UI 模型中并将其传递给视图。你的 UI 模型不应该知道 BL 模型——这种区别使得你的应用程序的各层松散耦合。
换句话说,我们可以说我需要从哪里调用我的中间层。来自模型还是来自控制器?
绝对来自控制器。您可以向其注入依赖项并从操作方法中调用它们。ASP.NET MVC 提供了许多将依赖项注入控制器的机制,并与 NInject、StructureMap 和其他一些 IoC 容器很好地集成。
MVC中各组件之间的依赖关系如下

图片取自 Martin 的 Fowler 关于GUI 架构的文章,顺便说一句,这是关于 MVC 和 MVP 的非常好的读物。
此外,Pluralsight还提供了一组有关软件实践的视频,其中涵盖了设计模式。我从他们对 MVVM 和 MVP 的定义中学到了很多东西。
阅读这些材料不仅可以增加您对模式本身的理解,还可以增加您对它们如何适应应用程序环境并与之交互的理解。