在 ASP.NET 中使用 Web API 优于 Web 方法的优势是啥

Posted

技术标签:

【中文标题】在 ASP.NET 中使用 Web API 优于 Web 方法的优势是啥【英文标题】:What is the advantage of using web API over web method in ASP.NET在 ASP.NET 中使用 Web API 优于 Web 方法的优势是什么 【发布时间】:2013-05-31 17:19:45 【问题描述】:

我熟悉网络方法。现在我得到了使用 Web API 而不是 Web 方法的建议。我已经做了一个 ASP.NET Web API 的演示,它更接近于 MVC 架构,使用的是经典的 asp.net Web 开发。我不喜欢将控制器(MVC 概念)与经典开发混为一谈。

我的网络方法:

[WebMethod]
public static string GetName(int id)

    return "testName";

我的 Web API 控制器:

public class MyController : ApiController

[HttpGet]
public string GetName(int id)

    return "testName";


在这个问题上我真的很困惑,任何人都对此有更好的想法。

您对相同的选项有什么建议?

如果两者都有相同的代码,我该如何比较?

【问题讨论】:

【参考方案1】:

经典的 ASP.NET WebServices(您称之为 WebMethod)是一种已弃用的技术。不再有任何积极的发展。 ASP.NET Web API 完全重写了 Microsoft 的 Web 堆栈,您可以在其中更好地控制创建 RESTful Web 服务。这并不意味着您应该在其中一个或另一个之间进行选择。还有ServiceStack。如果你正在开始一个新项目,你应该远离经典的 web 服务。如果它们仍然存在于 .NET 框架中,那是出于与遗留代码的兼容性原因。

【讨论】:

【参考方案2】:

补充 Darin 的回答,如果您想从 ApiController 测试您的方法,您可以使用 DI 容器 (http://www.asp.net/web-api/overview/extensibility/using-the-web-api-dependency-resolver) 注入对象的依赖项。依赖注入是自动完成的。

但是,对于 webmethods,您不能以这种方式使用 DI,因为 webmethods 必须是静态。如果您坚持使用 DI,则需要在每个 web 方法中直接实例化并调用容器,以使依赖项能够工作。

【讨论】:

以上是关于在 ASP.NET 中使用 Web API 优于 Web 方法的优势是啥的主要内容,如果未能解决你的问题,请参考以下文章

Asp.Net Web API 2第十课——使用OWIN自承载Web API

如何在使用 HttpClient 使用 Asp Net Web Api 的 Asp Net Mvc 中提供实时数据?

Web API系列教程2.1 — ASP.NET Web API中的路由机制

Asp.Net Web API 2第三课——.NET客户端调用Web API

在 ASP.NET Web API 中使用多个 Get 方法进行路由

Web API1.1 ASP.NET Web API入门