Asp.net mvc 将.NET MVC应用程序转换为N层应用程序

Asp.net mvc 将.NET MVC应用程序转换为N层应用程序,asp.net-mvc,visual-studio,model-view-controller,architecture,asp.net-core,Asp.net Mvc,Visual Studio,Model View Controller,Architecture,Asp.net Core,在.NET MVC 5或.NET核心MVC应用程序中,是否可以将模型拆分为数据传输层、将业务逻辑拆分为业务逻辑层、将数据库上下文拆分为数据访问层?基本上,我希望主项目实际上只有调用BLL的控制器,并在视图中显示结果。这样,如果我想交换主项目(本质上只是一个表示层),我的应用程序就具有可移植性 我知道我将需要这种体系结构,因为我正在构建一个在两个应用程序之间共享许多相同业务逻辑的应用程序。我仍然可以通过哪些方式访问有用的功能,如将模型搭建到视图/控制器中,并保持可移植性?有没有办法做这样的事 请注

在.NET MVC 5或.NET核心MVC应用程序中,是否可以将模型拆分为数据传输层、将业务逻辑拆分为业务逻辑层、将数据库上下文拆分为数据访问层?基本上,我希望主项目实际上只有调用BLL的控制器,并在视图中显示结果。这样,如果我想交换主项目(本质上只是一个表示层),我的应用程序就具有可移植性

我知道我将需要这种体系结构,因为我正在构建一个在两个应用程序之间共享许多相同业务逻辑的应用程序。我仍然可以通过哪些方式访问有用的功能,如将模型搭建到视图/控制器中,并保持可移植性?有没有办法做这样的事


请注意,该项目的预算可能很短,因此能够维护脚手架工具是非常必要的。

我在我的一个解决方案中从架构上完成了这项工作。我有一个单独的web服务项目currenlty WCF项目(它实现了repoistory模式),但是您可以使用类库来实现这一点。我总是在开发另一个客户端(如手机应用程序)时,所有逻辑都将适用于新客户端。如果没有,那么逻辑已经“渗透”到错误的项目中。具有自己的视图模型。我们有一个服务引用,然后从业务模型映射到视图模型。视图模型对其进行了验证,但任何业务逻辑域逻辑都会连接回服务引用,以确保它对任何其他客户端(如电话应用程序)都是相同的。这将导致真正精简的控制器操作(这很好)。我们对动作和模型进行单元测试,因为它们具有“视图/输入”逻辑和验证(正确或错误)。然后在WCF项目中测试主逻辑。这也允许多人参与,并使界面设计在IMO中变得更好。(WCF/web服务实际上是不相关的。这是关于如何正确地分离关注点的问题)这必须是明天,当我有VS时。(mvc视图)对您的作用有限,因为它只适用于DbContext oob(我不知道,可能有扩展添加了太常规的viewmodels),当您抽象逻辑时,因为您不会在表示层中使用持久性模型(这会导致违反层分离,对持久性模型的任何更改都会破坏其他层)而且您不会在控制器中使用db上下文,因为这会将持久性基础结构泄漏到域/业务和表示层