【问题标题】:How to seperate ASP.NET MVC core view and ASP.NET WEB API controllers into separate projects?如何将 ASP.NET MVC 核心视图和 ASP.NET WEB API 控制器分离到单独的项目中?
【发布时间】:2019-12-21 05:13:02
【问题描述】:

现在 API 和 MVC 控制器在同一个项目中,这很好。稍后我将添加一个 Angular 前端。但是,既然 Angular 前端是一个单独的项目,那么将 ASP.NET 核心 MVC 视图作为一个单独的项目是否有意义?任何地方的任何链接如何做到这一点?我想这样 2 视图(Angular 和 ASP.NET 核心 MVC)都会调用 WEB API 层,这似乎更合乎逻辑。 ..

或者如果他们留在同一个项目中,我至少应该让 MVC 控制器调用 WEB API 控制器?或者没有 ?

【问题讨论】:

    标签: c# asp.net-mvc asp.net-web-api


    【解决方案1】:

    如果我理解正确的话……

    您有一个 MVC 应用程序,其中还包含一些 API 控制器。您正在添加一个需要调用 API 控制器的 Angular 项目,并且您想知道是否应该将 API 控制器移到一个单独的项目中?

    如果是这样的话....可能。

    这样一来,API 将成为您的业务逻辑的中心来源,而 MVC 应用程序和 Angular 应用程序将成为该中心逻辑的两种不同表示形式。

    但归根结底,这是一个架构决策,您需要根据您对解决方案向前发展的看法做出决定。

    如果有帮助的话:

    • 降低复杂性
    • 帮助代码遵循 SOLID 原则
    • 阻止您违反 DRY 原则
    • 允许更好地分离关注点
    • 这样做的时间和成本是可以接受的

    那就去吧。

    您可能会发现 MVC 项目和 API 项目具有共享依赖项。因此,您最终可能不得不将模型或实体之类的东西也移动到他们自己的项目中,以便两者都可以引用它们。您可能还需要考虑身份验证及其工作原理,并考虑身份服务器之类的东西。

    希望对您有所帮助。

    【讨论】:

    • 但是 MVC 项目仅仅引用 WEB API 项目(两者都是 Web 项目)来获取数据是否有意义?似乎会,但我从来没有见过它这样做,而不是我如何从 MVC 控制器调用 WEB API 控制器
    • 我的最终目标是让 MVC 层尽可能地薄,并且只是另一个前端以相同的方式 angular.. 或 blazor 将成为前端
    • 要从 MVC 项目调用 API 项目,您可以使用 http 客户端:tutorialsteacher.com/webapi/… c-sharpcorner.com/article/calling-web-api-using-httpclient 您可以为 http 客户端代码创建一个包装器,这样您就不必编写相同的代码一遍又一遍。
    猜你喜欢
    • 2012-10-05
    • 2018-12-26
    • 1970-01-01
    • 1970-01-01
    • 2014-09-29
    • 2022-07-09
    • 1970-01-01
    • 1970-01-01
    • 2021-12-08
    相关资源
    最近更新 更多