Model view controller 在使用依赖项注入时,MVC框架是否有时仅用作用户界面层?

Model view controller 在使用依赖项注入时,MVC框架是否有时仅用作用户界面层?,model-view-controller,dependency-injection,Model View Controller,Dependency Injection,我正在努力学习依赖注入。我下面的书/示例似乎将MVC项目用作更广泛体系结构中的UI层。该示例包括一个单独的域层项目和另一个数据访问层项目 当我第一次学习MVC时,我以为MVC就是整个体系结构。V表示UI层的视图,C表示域层的控制器,M表示数据访问层的模型 因此,将MVC项目仅用作UI层是否是MVC框架的适当和/或普遍接受的应用程序?将SRP应用于MVC设计模式将引导您实现这一点。MVVM也是如此。您正在将逻辑从模型提取到其他类,如交互器、服务、存储库等 从任何角度来看,这都是完全正常的(也是可取

我正在努力学习依赖注入。我下面的书/示例似乎将MVC项目用作更广泛体系结构中的UI层。该示例包括一个单独的域层项目和另一个数据访问层项目

当我第一次学习MVC时,我以为MVC就是整个体系结构。V表示UI层的视图,C表示域层的控制器,M表示数据访问层的模型


因此,将MVC项目仅用作UI层是否是MVC框架的适当和/或普遍接受的应用程序?

将SRP应用于MVC设计模式将引导您实现这一点。MVVM也是如此。您正在将逻辑从模型提取到其他类,如交互器、服务、存储库等

从任何角度来看,这都是完全正常的(也是可取的)。您的模型只是几个不同层的抽象


我建议您看看VIPER(而不是一辆汽车),您将看到现在正在发生的事情。

将SRP应用到MVC设计模式将引导您实现这一点。MVVM也是如此。您正在将逻辑从模型提取到其他类,如交互器、服务、存储库等

从任何角度来看,这都是完全正常的(也是可取的)。您的模型只是几个不同层的抽象

我建议你们去看看毒蛇(不是一辆车)——你们会看到现在发生在你们身上的事情

那么,仅将MVC项目用作UI层是否是MVC框架的适当和/或普遍接受的应用程序

虽然可以完全在ASP.NET MVC的上下文中创建应用程序,但这样做意味着必须从头开始编写应用程序,才能使用不同的UI框架。将业务逻辑隔离到不与ASP.NET MVC耦合的一组单独的服务中,意味着只有顶层需要更换,才能移动到不同的UI框架,这也意味着应用程序的生命周期可能会超出ASP.NET MVC的末尾,并且/或者可以使用不同的UI框架(WebApi、WPF等)将其制作成一个应用程序,而不会带来太多麻烦

依赖注入的目的是将您的服务与应用程序的所有其他部分(包括彼此)分离。因此,通过扩展,将业务层与UI层分开构建是很自然的。实际上,在一个程序集中还是在多个程序集中使用它们只是一个偏好问题

那么,仅将MVC项目用作UI层是否是MVC框架的适当和/或普遍接受的应用程序

虽然可以完全在ASP.NET MVC的上下文中创建应用程序,但这样做意味着必须从头开始编写应用程序,才能使用不同的UI框架。将业务逻辑隔离到不与ASP.NET MVC耦合的一组单独的服务中,意味着只有顶层需要更换,才能移动到不同的UI框架,这也意味着应用程序的生命周期可能会超出ASP.NET MVC的末尾,并且/或者可以使用不同的UI框架(WebApi、WPF等)将其制作成一个应用程序,而不会带来太多麻烦


依赖注入的目的是将您的服务与应用程序的所有其他部分(包括彼此)分离。因此,通过扩展,将业务层与UI层分开构建是很自然的。无论您是在一个程序集中还是在多个程序集中实际使用它们,这实际上只是一个偏好问题。

MVC不是框架,而是模式。我花了一段时间才理解您的评论&我终于明白了为什么您的说法是正确的,但正如他们所说,故事还有很多。这是我的错;当我说MVC的时候我不太清楚;作为一个VisualStudio项目与MVC交谈。因此,尽管MVC显然是一种模式,但MVC项目是一种框架。不想引起争论,但像我这样经验不足的人可能会在读到这篇文章时感到困惑,MVC不是框架,而是模式。我花了一段时间才理解你的评论&我终于明白了为什么你的说法是正确的,但正如他们所说,故事还有很多。这是我的错;当我说MVC的时候我不太清楚;作为一个VisualStudio项目与MVC交谈。因此,尽管MVC显然是一种模式,但MVC项目是一种框架。不想引起争论,但像我这样经验不足的人可能会在读到这篇文章时感到困惑,后者就是我上面所说的。我下面的例子似乎将MVC带入了另一个我没有预料到的方向。作者建议将MVC项目分为表示层和UI层。这也是一种常见的或可取的体系结构吗?我从未想过VisualStudioMVC框架会被拆分,将控制器和模型放在不同的项目中。这会产生困难的问题吗?或者从长远来看,这真的有帮助吗?“谢谢!”艾伦-这要看情况了。您所做的每一层抽象都为扩展应用程序提供了更多的机会,为注入组件提供了更多的接缝。然而,每一层抽象都需要额外的维护/开发时间。对于给定场景,额外的抽象级别是否能保证额外的开发和维护成本取决于应用程序的设计者。但原则上,如果您决定“支付”这个价格,将控制器和模型从基本MVC项目中撤出是可以的?通常不是这样。做一些事情,比如制作每个插件都有自己的控制器和视图,可以保证这一点,但大多数应用程序没有。我上面的回答是指执行域(业务)逻辑的服务。这分离了每一个业务算法