ASP.NET WebApi与MVC?

使用ASP.NET MVC控制器,您可以以不同的格式显示数据。 AspNetWebAPI是为创buildAPI而明确devise的,但是我可以很容易地用MVC控制器做到这一点,对于我来说,在什么情况下它会比传统的MVC控制器更好。 我对WebApi的好处是显而易见的情况感兴趣,并且值得向我的应用程序添加另一个复杂层。

问:关于MVC使用asp.net WebApi有哪些优点和/或缺点?

WebApi允许创build可以通过HTTP暴露的服务,而不是通过诸如WCF或SOAP之类的正式服务。 另一个区别就是WebApi如何使用Http协议,使其成为一stream的Http公民。

更新: ASP.NET Core,Web API已被集成到MVC项目types中。 ApiController类被整合到Controller类中。 更多在: https : //wildermuth.com/2016/05/10/Writing-API-Controllers-in-ASP-NET-MVC-6

比较,讨论和教程的相关链接:

  • MVC5 vs WebApi项目
  • ASP.NET MVC和ASP.NET Web API的区别
  • ASP.NET Core介绍包括MVC,Web API演示
  • ASP.NET Web API入门教程

在这里输入图像说明

WebAPI吐出OData,所以你可以获得使用OData的所有优点。 例如,通过WebAPI,您可以获得:

  • 查询选项,例如$ filter,$ top,$ orderby等
    • 使用传统的MVC控制器,你需要自己实现这些。
  • 格式的标准化
    • 有OData客户端将了解您的RESTful API的基础格式。

相似

1)都从ihhtphandler为asyncrequestinheritance,所以基本上apicontroller或mvc控制器都是围绕web.http

差异:1)如果你可以通过它的定义,你可以看到多less个接口和它使用的基本代码,mvc控制器是非常繁重的,web api是更轻的控制器,通过它传递的参数区分请求(是的,我们也可以改变它! )

2)MVC控制器有太多的function,如返回的意见,行动的结果,JavaScript的结果等,但在Web API有JSON或XML

3)API是为了实现Restful(get,post,put,delete,options)服务,它可以独立地托pipe任何地方,而不依赖于视图,MVC控制器不能支持它,因为它与视图紧密集成。

在某些时候,你可能想忘记ASP.NET MVC。 如果你是一个.NET开发人员,但是你想要构build一个单页面应用程序(例如使用Angular),那么你将需要RESTful服务(WebAPI)的好处,而不需要ASP.NET MVC带来的所有不必要的膨胀。

Asp.Net Web API VS Asp.Net MVC 在这里输入图像说明 1 。 Asp.Net MVC用于创build返回视图和数据的Web应用程序,但Asp.Net Web API用于以简单易用的方式创build全面的HTTP服务,只返回数据而不是视图。

2 。 Web API有助于在.NET Framework上构buildREST-ful服务,并且还支持内容协商(即确定客户端可以接受的最佳响应格式数据,可以是JSON,XML,ATOM或其他格式的数据),不在MVC中的自主托pipe。

3 。 Web API还负责以JSON,XML或其他任何基于请求中Accept头的特殊格式返回数据,您不必担心这一点。 MVC只使用JsonResult以JSON格式返回数据。

4 。 在Web API中,请求被映射到基于HTTP动词的动作,但是在MVC中映射到动作名称。

5 。 Asp.Net Web API是新的框架和核心ASP.NET框架的一部分。 Web API中存在的模型绑定,filter,路由和其他MVCfunction与MVC不同,并且存在于新的System.Web.Http程序集中。 在MVC中,这些特性在System.Web.Mvc中存在。 因此,Web API也可以与Asp.Net一起使用,并作为独立的服务层使用。

6 。 您可以在单个项目中混合使用Web API和MVC控制器,以处理可能以JSON,XML或任何其他格式返回数据并构build完整HTTP服务的高级AJAX请求。 通常,这将被称为Web API自托pipe。

7 。 当你有混合的MVC和Web API控制器,你想实现授权,那么你必须创build两个filter一个MVC和另一个Web API,因为两者是不同的。

8 。 而且,Web API是轻量级架构,除了Web应用程序,它也可以用于智能手机应用程序。

原始来源是在这里

这个形象似乎performance出了这个问题的不同点和相似之处。 我希望帮助对我来说很有趣。

在这里输入图像说明

ASP.NET MVC和ASP.NET Web API都被用于不同的目的

ASP.NET

ASP.NET提供了三个用于创buildWeb应用程序的框架:Web窗体,ASP.NET MVC和ASP.NET Web页面。 所有这三个框架都是稳定和成熟的,您可以使用它们中的任何一个创build出色的Web应用程序。 无论您select什么框架,您都可以获得ASP.NET的所有优点和特性。

每个框架都针对不同的开发风格。 您所select的取决于您的编程资产(知识,技能和开发经验),您正在创build的应用程序types以及您所熟悉的开发方法。 所有三个框架将在未来的ASP.NET版本中得到支持,更新和改进。

MVC

ASP.NET MVC为您提供了一种强大的,基于模式的方式来构builddynamic网站,使您能够清晰地分离问题,并使您能够完全控制标记以获得愉快的敏捷开发。 ASP.NET MVC包含许多function,可实现快速,TDD友好的开发,以创build使用最新Web标准的复杂应用程序。

Web API

ASP.NET Web API是一个框架,可以轻松构build到达各种客户端(包括浏览器和移动设备)的HTTP服务。 ASP.NET Web API是在.NET Framework上构buildRESTful应用程序的理想平台。

你可以阅读更多的forms在这里http://www.dotnet-tricks.com/Tutorial/webapi/Y95G050413-Difference-between-ASP.NET-MVC-and-ASP.NET-Web-API.html

ASP.NET MVC专注于使HTML的输出变得容易。 ASP.NET Web API专注于简化原始数据的输出。

在WebForms世界中,ASP.NET MVC将等同于.aspx页面,ASP.NET Web API将是.asmx

通常,WebAPI用于MVC可以生成更多types的输出的数据服务。

WebAPI肯定可以简化我们创build数据服务的方式。 这是干净和容易的。 MVC带有更多的工具。

MVC可以生成WebAPI可以输出的任何输出。 通过模板生成输出可以很容易地在MVC中实现。 在WebAPI中我找不到这样做的理由。 PHP开发人员和老ASP程序员可能知道过去的这种态度,在那里你可以build立与C#代码有关的HTML文件。

WebAPI-数据MVC – 数据,UI / HTML,XHTML,文件,模板等。

Asp.Net MVC用于创build返回视图和数据的Web应用程序,但Asp.Net Web API用于以简单方式创build全面的HTTP服务,只返回数据而不是视图。

Web API有助于在.NET Framework上构buildREST-ful服务,并且还支持内容协商(这是关于决定客户端可以接受的最佳响应格式数据,可能是JSON,XML,自主托pipe在MVC中。

Web API还负责以JSON,XML或其他任何基于请求中Accept头的特殊格式返回数据,您不必担心这一点。 MVC只使用JsonResult以JSON格式返回数据。