使用WebAPI或MVC在ASP.NET中返回JSON

我正在构建一个客户端脚本很重的ASP.NET MVC应用程序,它将使用JSON和jQuery来操作DOM。

我的理解是Web API控制器MVC控制器都可以返回JSON。

鉴于我的情况,我应该使用Web API控制器还是MVC控制器


Web API控制器可以在任何ASP.NET应用程序中创建和托管,而不仅仅是MVC应用程序。 因此,创建Web API的一个明显原因是,如果您没有MVC前端(例如,贵公司/组织托管的经典RESTful Web服务)。

MVC控制器通常依赖于MVC框架,如果您查看默认模板以及社区和同行完成的大部分工作,您会注意到几乎所有的MVC控制器都是以View为基础实现的。

就我个人而言,当我打算使用View()进行响应时,我使用MVC控制器,并且我将使用Web API来处理不依赖于特定视图的任何事物。

当然有警告,但一般来说,如果您不需要MVC的模型绑定行为,您的服务是以数据为中心的,而操作是以数据为中心的(例如CRUD操作),那么您可能需要一个'Web API控制器'而不是'模型 - 视图控制器'。 相反,如果您的操作是以视图为中心的(例如,向用户提供用户管理页面),或者您需要MVC的模型绑定来生成'ajax partials'(非常不可能),那么您将需要一个MVC控制器。

就我个人而言,我使用Web API控制器来驱动基于JSON的RESTful客户端,我使用MVC控制器来处理基本浏览器路由和交付SPA。


WebAPI用于制作API。 如果您希望某人能够使用XML,JSON等API来使用您的API,则可以制作Web API。

在你的情况下,你只需要在JSON中与客户端交谈。

即使你的网站大多是客户端脚本驱动,你仍然会使用ASP.NET MVC控制器吗? 由于您可能已经在逻辑上根据实体划分了您的控制器,因此在其中添加这些json服务方法是有意义的,而不是专门为web api创建另一个类。

所以对于你的特定情况(如果我理解正确的话),我会坚持使用控制器。


答案归结为关注点的分离,紧固服务的创建以及依靠约定而不是配置。

控制者的主要职责是作为视图和模型之间的协调者,但API的主要职责是处理数据。 在API的约定中,使CRUD操作变得非常简单。 以下是CRUD操作和HTTP操作之间的映射

  • GET:阅读
  • POST:创建
  • PUT:更新
  • 删除:删除
  • 所以对于API,您不必创建单独的操作并使用HTTP操作对其进行归属。

    链接地址: http://www.djcxy.com/p/3461.html

    上一篇: Using WebAPI or MVC to return JSON in ASP.NET

    下一篇: ServiceStack vs ASP.Net Web API