2013-06-05 28 views
7

Jestem zaznajomiony z metody internetowej. Teraz mam propozycję użycia web API zamiast metody webowej. Zrobiłem demo ASP.NET web API jest bliżej architektury MVC am przy użyciu klasycznego rozwoju strony asp.net. Nie lubię zepsuć kontrolera (koncepcja MVC) z klasycznym rozwojem.Jaka jest zaleta korzystania z metody web API przez WWW w ASP.NET

moja metoda internetowej:

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

Mój kontroler Web API:

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

jestem bardzo mylić w tej kwestii ktoś ma lepszy pomysł na to samo.

Jaka jest Twoja sugestia na temat tego samego, który jest lepszym rozwiązaniem?

Jak mogę to porównać, jeśli oba mają ten sam fragment kodu?

Odpowiedz

13

Klasyczne usługi ASP.NET WebServices (to, co nazywamy WebMethod) są przestarzałą technologią. Nie ma już żadnego aktywnego rozwoju. Interfejs API sieci ASP.NET to kompletne przepisanie stosu internetowego firmy Microsoft, w którym masz znacznie większą kontrolę nad tworzeniem usług RESTful Web. Nie oznacza to, że powinieneś wybierać między jednym a drugim. Jest też ServiceStack. Jeśli rozpoczynasz nowy projekt, powinieneś unikać klasycznych usług sieciowych. Jeśli są nadal obecne w środowisku .NET, to ze względu na kompatybilność ze starszym kodem.

3

Uzupełnienie odpowiedzi Darina, jeśli chcesz przetestować swoją metodę z ApiController, możesz wstrzyknąć zależności obiektu za pomocą pojemnika DI (http://www.asp.net/web-api/overview/extensibility/using-the-web-api-dependency-resolver). Zastrzyk zależności jest wykonywany automatycznie.

Jednak w webmethods nie można używać DI w ten sposób, ponieważ webmethods musi być static. Jeśli nalegasz na użycie DI, musisz utworzyć instancję i wywołać kontener bezpośrednio w każdym z metod webowych, aby uruchomić zależności.