2013-06-05 68 views
7

我熟悉web方法。现在我得到了一个使用web API而不是web方法的建议。我做了一个ASP.NET web API演示,它更接近于使用经典的asp.net web开发的MVC架构。我不喜欢用经典开发搞乱控制器(MVC概念)。在ASP.NET中使用web API比web方法有什么优势

我的Web方法:

[WebMethod] 
public static string GetName(int id) 
{ 
    return "testName"; 
} 

我的Web API控制器:

public class MyController : ApiController 
{ 
[HttpGet] 
public string GetName(int id) 
{ 
    return "testName"; 
} 
} 

上午真糊涂在这个问题上任何一个有同一更好的主意。

你对同样的更好的选择的建议是什么?

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

回答

13

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

3

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

但是,使用webmethods,您不能以这种方式使用DI,因为webmethods必须是static。如果您坚持使用DI,则需要在每个webmethods中直接实例化和调用容器,以获取依赖关系。

相关问题