8

我熟悉网络方法。现在我得到了使用 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";
}
}

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

您对此有何建议,哪个是更好的选择?

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

4

2 回答 2

15

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

于 2013-06-05T06:08:43.470 回答
3

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

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

于 2013-07-11T14:09:40.990 回答