【问题标题】:Adding Web API Controllers to an MVC Project vs Adding a whole new Web API Project将 Web API 控制器添加到 MVC 项目与添加全新的 Web API 项目
【发布时间】:2016-05-04 00:50:49
【问题描述】:

我有一个使用 MVC 控制器返回视图的 MVC 应用程序。现在我想向其他应用程序公开一个 API 以供使用,以及为同一 MVC 中的某些 SPA 功能返回 JSON 数据类型。将 Web API 控制器添加到我的 MVC 项目与添加全新的 Web API 项目有什么区别?

【问题讨论】:

  • 这个问题太含糊了,因为话题很大。是否存在您担心的特定差异(或领域)?如果没有,我会将它们添加到您当前的项目中,因为您以后可以随时将它们迁移到单独的项目中。
  • 我明白了。据我所知,我只需要将 Web Api 控制器添加到我当前的项目中,但我想知道添加单独的 Web Api 项目并在那里创建它们有什么好处。

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


【解决方案1】:

为同一 MVC 中的某些 SPA 功能返回 JSON 数据类型

对于这种情况,我会将 Web API 放在现有的 MVC 中。通过这样做,您可以共享业务逻辑、服务甚至模型。

在我的例子中,我有 SPA silos 使用 AngularJS,MVC 和 Web API 在同一个 Web 应用程序中愉快地生活,并共享业务逻辑和数据访问层。

值得注意的是,如果将 MVC 和 Web API 放在一起,则可以共享 Authentication cookie。否则,同时在两个地方进行身份验证会很痛苦,因为 Web API 是基于令牌的,而 MVC 默认是基于 cookie 的。

仅供参考:在新的 ASP.Net MVC 5 中,将不再有单独的 MVC 和 Web API。

【讨论】:

  • 我明白了。我有 80% 的把握使用这种方法来解决我的 SPA 问题。但是,第三方对 API 的访问呢?在同一个应用程序中同时使用 API 和 MVC 是否有任何安全隐患?
【解决方案2】:

两者之间的唯一区别是可重用性良好的设计实践。我强烈建议在单独的项目中使用它。然后,稍后,您将能够毫不费力地重复使用它。

隔离的另一个好处是对所做的任何更改的测试的影响。如果您保持项目不同,那么如果以后您更改任何内容,则重新测试工作的领域也将只是第二个项目。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-11
    • 1970-01-01
    • 1970-01-01
    • 2021-01-17
    • 1970-01-01
    相关资源
    最近更新 更多