2013-06-05 97 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中直接實例化和調用容器,以獲取依賴關係。

相關問題