C# 在ASP.NET MVC(5)项目中使用Web API的优势是什么?
我正在ASP.NET MVC 5中实现一个企业web应用程序。在许多情况下,我编写AJAX获取和发布,并与服务器应用程序通信。目前,我正在编写控制器操作来服务这些请求,通常返回JSON结果。当我在客户端传递JSON时,action方法参数绑定似乎也能无缝工作C# 在ASP.NET MVC(5)项目中使用Web API的优势是什么?,c#,asp.net,ajax,json,asp.net-mvc,C#,Asp.net,Ajax,Json,Asp.net Mvc,我正在ASP.NET MVC 5中实现一个企业web应用程序。在许多情况下,我编写AJAX获取和发布,并与服务器应用程序通信。目前,我正在编写控制器操作来服务这些请求,通常返回JSON结果。当我在客户端传递JSON时,action方法参数绑定似乎也能无缝工作 我不想在不合适的实践中走得太远,因此问题出现了,在我的项目中添加Web API支持,并重构我当前的ajax-controller实践有什么好处?相比MVC+ajax,使用Web API没有什么好处: 内部序列化 WebAPI有一个内部序列化
我不想在不合适的实践中走得太远,因此问题出现了,在我的项目中添加Web API支持,并重构我当前的ajax-controller实践有什么好处?相比MVC+ajax,使用Web API没有什么好处:
Ok()
,NotFound()
,InternalServerError()
,它们都返回IHttpActionResult
,这使您的代码更易于阅读和维护,并清楚地说明您的意图
IHttpActionResult
可以轻松地提取结果,这在单元测试控制器时非常有用
我想说,只有当WebAPI不存在时,使用MVC+Ajax才可行,因为这是唯一的选择。如果您的项目客户需要多种格式(json、xml、csv)的数据,或者将来有机会更改,那么与MVC相比,Wep Api需要最少的配置。Wep Api根据内容协商将数据返回给客户端(如果客户端需要xml返回xml,如果json根据请求头返回json),但在mvc中,您需要更多的代码来满足这一要求。编写操作方法时,您必须显式指定数据格式。(
JsonResult,ActionResult,XmlResult
)
当您稍后查看代码时,WEPAPI为您提供了关于您正在做什么的更有意义的想法;
public List Get()
比public JsonResult Index()
更有意义
你看过ASP.NET 5(MVC 6)中的变化了吗?我还没有,虽然我已经将我的解决方案迁移到VS 2015,但是如果你不需要返回视图,使用相同版本的.NET、ASP.NET、EF和MVCWeb Api返回Json(或XML)会更好。在您的MVC控制器中,您是否从您的操作返回JSONResults?@g.pickardou,因为它们已删除ASP控制器和WebAPI控制器,并使用与您完全相同的新控制器mention@Padraic:是的,在控制器中,我将使用JsonResultThx返回哪些服务AJAX请求。我问的是一个特殊的场景,当存在一个MVC应用程序而不考虑web服务需求时。因此,在这种情况下,“可供自主机使用”并不是一个优势。问题是将MVC(控制器)与WebAPI(ApiController)进行比较——wcf与OP的问题无关