我正在构建一个客户端脚本繁重的ASP.NET MVC应用程序,它将使用JSON和jQuery来操作DOM。
我的理解是 Web API Controller 和 MVC Controller 都可以返回JSON。
在我的情况下,应该使用 Web API控制器 还是 MVC控制器 ?
可以在任何ASP.NET应用程序中创建并托管Web API控制器,而不仅仅是MVC应用程序。因此,创建Web API的明显原因是您没有MVC前端(例如,公司/组织托管的经典RESTful Web服务)。
MVC控制器通常依赖于MVC框架,如果您查看默认模板以及社区和对等方所做的大部分工作,您会注意到几乎所有MVC控制器都是在考虑视图的情况下实现的。
就个人而言,当我打算使用View()进行响应时,我将使用MVC控制器,并且对于不依赖于特定视图的任何事物,都将使用Web API。
当然,有一些警告,但是通常来说,如果您不需要MVC的模型绑定行为,则您的服务是以数据为中心的,而操作是以数据为中心的(例如CRUD操作),那么您可能希望使用“ Web API控制器”而不是“模型视图控制器”。相反,如果您的操作是以视图为中心的(例如,向用户提供用户管理页面),或者您需要MVC的模型绑定来生成“ ajax局部”(非常不可能),那么您将需要MVC控制器。
我个人使用Web API控制器来驱动基于JSON的RESTful客户端,使用MVC控制器来处理基本的浏览器路由和SPA的传递。