使用ASP.NET MVC控制器,您可以以不同的格式公开数据。 AspNetWebAPI是专门为创建API而设计的,但我可以轻松地使用MVC控制器,我不清楚在什么情况下它会比传统的MVC控制器更好。我对WebApi的好处是显而易见的情况感兴趣,并且值得为我的应用程序添加另一个复杂性层。
问题:对于MVC使用asp.net WebApi有哪些优点和/或缺点?
答案 0 :(得分:40)
WebApi允许创建可以通过HTTP公开的服务,而不是通过正式服务(如WCF或SOAP)。 另一个区别在于WebApi如何使用Http协议并使其真正成为一流的Http公民。
UPDATE: ASP.NET Core,Web API已集成到MVC项目类型中。 ApiController
类合并到Controller
类中。更多信息:https://wildermuth.com/2016/05/10/Writing-API-Controllers-in-ASP-NET-MVC-6
比较,讨论和相关的相关链接教程:
答案 1 :(得分:20)
WebAPI吐出OData,因此您可以获得使用OData的所有优势。例如,使用WebAPI,您将获得:
答案 2 :(得分:12)
相似性
1)两者都继承自ihhtphandler for asyncrequest所以基本上apicontroller或mvc控制器都是web.http的包装器。
的差异: 1)mvc控制器非常重,如果你可以通过它的定义你可以看到它使用了多少接口和基本代码,web api是更轻的控制器并通过其传递的参数来区分请求(是的,我们也可以改变它!)< / p>
2)MVC控制器有太多功能,比如它返回视图,动作结果,javascript结果等,但在web api中有JSON或XML
3)API用于实现Restful(get,post,put,delete,options)服务,这些服务可独立托管任何不依赖于视图的地方,MVC控制器无法支持,因为它与视图紧密集成。
答案 3 :(得分:12)
Asp.Net Web API VS Asp.Net MVC
的 1 即可。 Asp.Net MVC用于创建返回两者的Web应用程序
视图和数据,但Asp.Net Web API用于创建完整的HTTP
服务采用简单易行的方式,只返回不查看的数据。
<强> 2 即可。 Web API有助于在.NET Framework上构建REST-ful服务 它还支持内容协商(它是关于决定最好的 响应格式数据,客户可以接受。它 可以是JSON,XML,ATOM或其他格式化数据),自托管哪个 不属于MVC。
第3 即可。 Web API还负责以特定格式返回数据 JSON,XML或任何其他基于请求中的Accept标头 而你不用担心这一点。 MVC仅以JSON格式返回数据 使用JsonResult。
<强> 4 即可。在Web API中,请求被映射到基于HTTP谓词的操作 但在MVC中它被映射到动作名称。
<强> 5 即可。 Asp.Net Web API是新的框架和核心ASP.NET的一部分 框架。模型绑定,过滤,路由和其他MVC Web API中存在的功能与MVC不同并存在于 新的System.Web.Http程序集。在MVC中,这些特征存在于 System.Web.Mvc。因此,Web API也可以与Asp.Net一起使用 独立的服务层。
<强> 6 即可。您可以在单个项目中混合Web API和MVC控制器来处理 高级AJAX请求,可以返回JSON,XML或任何数据 其他人格式化并构建完整的HTTP服务。通常情况下, 这将被称为Web API自托管。
<强> 7 即可。如果你有混合的MVC和Web API控制器,你想要 实施授权然后你必须创建两个过滤器 对于MVC和另一个用于Web API,因为两者都不同。
<强> 8 即可。此外,Web API是轻量级架构,除了Web 应用程序,它也可以用于智能手机应用程序。
原始来源为here
答案 4 :(得分:10)
在某些时候,您可能想要一起忘记ASP.NET MVC。如果您是.NET开发人员但想要构建单页面应用程序(例如使用Angular),那么您将希望获得RESTful服务(WebAPI)的好处,而不会带来ASP.NET带来的所有不必要的膨胀MVC。
答案 5 :(得分:10)
答案 6 :(得分:5)
ASP.NET MVC和ASP.NET Web api它们都用于不同目的
<强> ASP.NET 强>
ASP.NET提供了三个用于创建Web应用程序的框架:Web窗体,ASP.NET MVC和ASP.NET Web页面。这三个框架都是稳定和成熟的,您可以使用它们中的任何一个创建出色的Web应用程序。无论您选择哪种框架,您都将获得ASP.NET的所有优势和功能。
每个框架都针对不同的开发风格。您选择的那个取决于您的编程资产(知识,技能和开发经验),您正在创建的应用程序类型以及您熟悉的开发方法的组合。在将来的ASP.NET版本中,将支持,更新和改进所有三个框架。
<强> MVC 强>
ASP.NET MVC为您提供了一种强大的,基于模式的方式来构建动态网站,从而实现关注点的清晰分离,并使您可以完全控制标记,从而实现愉快,敏捷的开发。 ASP.NET MVC包含许多功能,可以实现快速,TDD友好的开发,以创建使用最新Web标准的复杂应用程序。
Web API
ASP.NET Web API是一个框架,可以轻松构建可覆盖广泛客户端的HTTP服务,包括浏览器和移动设备。 ASP.NET Web API是在.NET Framework上构建RESTful应用程序的理想平台。
你可以在这里阅读更多表格 http://www.dotnet-tricks.com/Tutorial/webapi/Y95G050413-Difference-between-ASP.NET-MVC-and-ASP.NET-Web-API.html
答案 7 :(得分:3)
ASP.NET MVC专注于简化HTML输出。 ASP.NET Web API专注于简化原始数据的输出。
在WebForms世界中,ASP.NET MVC将等同于.aspx页面,ASP.NET Web API将等同于.asmx
答案 8 :(得分:1)
通常, WebAPI用于数据服务,其中MVC可以生成更多类型的输出。
WebAPI肯定会简化我们创建数据服务的方式。 它很干净,很容易达到这个目的。 MVC带来了更多的工具。
MVC可以生成WebAPI可以输出的任何输出。 在MVC中可以轻松实现从模板生成输出。我无法在WebAPI中找到理由这样做。 PHP开发人员和旧的ASP程序员可能会从过去了解这种态度,您可以在其中构建与C#代码相关的HTML文件。
WebAPI-数据 MVC - 数据,UI / HTML,XHTML,文件,模板等。
答案 9 :(得分:0)
Asp.Net MVC用于创建返回视图和数据的Web应用程序,但Asp.Net Web API用于创建完整的HTTP服务,只需简单而简单的方式返回数据而不是视图。
Web API有助于在.NET Framework上构建REST-ful服务,它还支持内容协商(它是关于决定客户可以接受的最佳响应格式数据。它可以是JSON, XML,自托管,不在MVC中。
Web API还负责根据请求中的Accept标头以特定格式(如JSON,XML或其他任何格式)返回数据,您不必担心这一点。 MVC仅使用JsonResult以JSON格式返回数据。