在ASP.NET中使用Web API而不是Web方法有什么优势

时间:2013-06-05 06:03:42

标签: asp.net .net architecture asp.net-web-api webmethod

我熟悉web方法。现在我有一个使用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";
}
}
我真的很困惑这个问题,任何一个人都有更好的想法。

对于同样哪个更好的选择,你有什么建议?

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

2 个答案:

答案 0 :(得分:14)

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

答案 1 :(得分:3)

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

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