我正在 ASP.NET MVC 5 中实现企业 Web 应用程序。在许多情况下,我正在编写 AJAX 获取和发布以及与服务器应用程序通信。目前我正在编写 Controller 操作来为这些请求提供服务,通常返回 JSON 结果。当我在客户端传递 JSON 时,操作方法参数绑定(bind)似乎也可以无缝工作。
我不想在不合适的做法上走得太远,所以问题来了,向我的项目添加 Web API 支持并重构我当前的 ajax - Controller 做法有什么好处?
最佳答案
与 MVC + Ajax 相比,使用 WebAPI 的优点很少:
内部序列化
WebAPI 具有内部序列化,这使得返回特定数据更加容易,无需您自己的扩展方法或使您的 Controller 依赖于序列化框架库。
行动结果助手
您可以使用大量的操作结果助手,例如
Ok()
、NotFound()
、InternalServerError()
,它们都返回IHttpActionResult
,是什么让您的代码更易于阅读和维护,并清楚地表达您的意图。Action 结果抽象
使用
IHttpActionResult
您可以轻松抽象结果,这在对 Controller 进行单元测试时很有用。可自托管
使用 OWIN,您可以轻松地自行托管您的 WebAPI 项目,这使您的应用程序更易于维护且独立于 IIS。
原生属性路由
WebAPI 实现了属性路由,这使得所有路由配置更加容易(并且在使用基于特性的架构时有所帮助)。
DI 配置改进
WebAPI 和 MVC 都有自己的组合根和不同的 DI 实现。 Microsoft 对 WebAPI 进行了一些改进,使其更易于使用和维护。
我会说,只有当 WebAPI 不存在时,使用 MVC + Ajax 才是可行的,因为这是唯一的选择。
关于c# - 在 ASP.NET MVC(5) 项目中使用 Web API 有什么优势?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31741047/