【发布时间】:2019-10-02 10:42:51
【问题描述】:
过去,我一直考虑在单独的 Web API 项目中公开将在客户端使用的方法。目前,我正在深入研究 ASP.NET Core MVC,现在了解控制器的用途。 (我来自 ASP.Net webforms 背景)
考虑到我将来可能会编写一个应用程序(例如,使用 Xamarin),我会使用来自 Core MVC 项目的大部分相同方法,因此将大部分功能分离到一个单独的 api.xxx 中是有意义的.com Web API 项目。
在我看来,ASP.NET Core MVC 控制器与 Web API 项目非常相似,我看不出在使用它们方面有很大的不同。基本上,我对是否有两个项目(核心 MVC 项目和单独的 Web API 项目)或只有一个感到困惑。
- 我应该使用两个项目还是只使用一个?有什么优点和缺点?如果我使用两个,我根据哪些标准决定在哪里添加新代码?我可以将 Core MVC 项目中的控制器中的几乎所有(有什么例外)代码移动到 Web API 项目中吗?这是好方法还是坏方法?
- 我应该如何处理客户端登录?我知道我可以使用 OWIN 为我的 Web API 项目获得基于令牌的身份验证,但是我应该如何将 ASP.NET Core MVC 项目的身份验证与 Web API 项目结合起来?
- 假设我决定只为两个项目使用一个项目。如果 Xamarin 应用程序一直调用 MVC 项目而不是 Web API 项目,会有多少开销?
【问题讨论】:
-
您可以拥有一个同时具有 MVC 和 Web API 的 Web 项目。虽然 Web 应用程序视图将使用 mvc 控制器,但 Web API 控制器可用于向客户端公开 API。并且它们都可以一起进行身份验证和授权
-
啊,所以我想区别不在于方法消耗什么,而是它们返回什么样的内容,例如,视图或 IEnumerable。一个快速的想法:我可以从 MVC 项目中的控制器方法调用 Web API 项目,嗯
-
从 mvc 控制器调用 Web API 会在应用程序中引入更多的跃点和移动部分,您需要担心。如果你有一个只返回数据的公共地方,那么你可以从 mvc 和 API 控制器中使用它,并使用数据发送到视图作为模型或作为 json 返回到 API 客户端
-
这里我假设您有一个 Web 应用程序,用户将通过浏览器使用它,并且会有客户端应用程序(例如移动应用程序)使用 Web API 来保存和检索数据。
-
您也可以在 Web API 控制器中使用的业务逻辑层。我正是这个意思。您可以在同一个项目中拥有 Web API 控制器和 mvc 控制器。您实际上并不需要两个单独的 Web 项目。
标签: c# asp.net-core asp.net-core-mvc asp.net-core-webapi