我已经使用asp.net MVC大约1。5年了,我很享受它的功能,并且已经部署了许多成功的Web应用程序,但我现在正在阅读asp.net Web API技术。而且,我发现以下内容:
我可以实现我过去使用MVC实现的任何功能;使用新的Web API并采用更轻量级的方法。
使用Web API比较asp.net MVC更容易开发Web服务。
那么,asp.net Web API将来是否会接管asp.net MVC,或者每种技术都有自己的增长领域,或者我们是否应该考虑在同一个Web应用程序中使用它们?
答案 0 :(得分:15)
除了@ jmoerdyk的回答,我想指出一些事情:
关键是要了解每项技术的目标:
这将是用于创建Web服务的新API,这是传统XML服务和WCF服务的替代方案,因此值得首先指出WEB API与其他Web服务框架之间的主要区别。
Web API和WCF / ASMX服务之间的主要区别在于它不基于SOAP它基于HTTP 因此您可以利用所有HTTP功能,例如:
这就是Web API的主要目标,当时称为WCF Web API:通过WCF的眼睛停止查看HTTP - 仅作为传递请求的传输协议。相反,它允许我们将其视为真正的应用程序级协议 - 丰富,可互操作,面向资源的协议。 Web API的目的是正确使用URI,HTTP头和主体为Web创建HTTP服务,以及希望将HTTP作为其协议和终身朋友的其他人。
有关详细信息,请参阅此文章:http://www.codeproject.com/Articles/341414/WCF-or-ASP-NET-Web-APIs-My-two-cents-on-the-subjec
基本上,Web API实际上可以与WCF或XML服务进行比较
如果您想知道WCF会发生什么?
所以事实是我们有太多的选择,因此太多混乱。我们该怎么办?我们合并团队! (有点让我们想起LINQ-to-SQL和实体框架,WCF和Ado.Net数据服务以及其他此类示例的时间)。因此,WCF团队和ASP.NET团队联合起来,创建了一个新的框架,专注于Web世界的REST /超媒体/ HTTP服务世界,从而产生了ASP.NET Web API。
既然你知道Web API的目标是什么,那么说为什么MVC包含主要呈现视图的附加功能应该更容易。
您的担忧是基于WEB API 实际上基于MVC 的事实,但他们的目标是不同的
另一方面,ASP.NET MVC基础架构优雅地处理HTTP请求和响应,并支持易于创建的控制器,这似乎是创建这种新型服务的正确方法
答案 1 :(得分:6)
不,他们并没有真正做同样的事情。
Web API实际上仅用于生成基于REST的API的JSON,XML或其他基于文本的响应。 MVC也可以这样做,但新的Web API似乎更容易,特别是在自动内容类型协商时。
Web API不适合用于生成具有视图等的完整或部分HTML页面。
因此,每个人在ASP.Net框架中都有自己的目的,而且不太可能超越另一个。
答案 2 :(得分:2)
WebAPI和MVC是两个不同的东西,但它们都在同一个框架中工作。 WebAPI用于提供宁静的服务。 MVC用于网页。
您可以在MVC中创建休息服务,其工作量远远超过WebAPI。反之则不然。您无法在WebAPI中创建Web页面。因此,你的问题从根本上被混淆了。
答案 3 :(得分:0)
它们将在新版本中合并,技术上两者的工作方式类似,但API没有附加视图,因此可以提供更好的性能