Ostatnio popularność zdobywa WebAPI. W czym ona jest lepsza od WCF?
Ostatnio popularność zdobywa WebAPI. W czym ona jest lepsza od WCF?
Postawione pytanie jest analogicznym do pytania typu "Czy lepszy jest młotek zegarmistrzowski czy pneumatyczny?" :)
WebAPI oraz WCF są narzędziami. Jeśli odpowiedziałem sobie na pytanie, co chcę osiągnąć oraz gdy znam zalety i wady tych narzędzi, wtedy potrafię zdecydować, które z nich będzie lepszym do realizacji założonego celu.
Zatem czego nie posiada WebAPI, a co daje WCF?
WebAPI działa tylko w oparciu o protokół HTTP, natomiast WCF obsługuje również protokoły TCP, UDP.
WCF posiada obsługę komunikacji dwukierunkowej (duplex) oraz kolejkowania czego WebAPI nie ma. Wysyłanie danych z serwera do klienta można zrealizować za pomocą WebSocket lub SignalR.
WebAPI nie zastępuje w pełni WCF, ale w wielu przypadkach jest wygodniejsza.
Polecam artykuł Ricka Strahla, który opisuje gdzie najlepiej pasuje WebAPI:
weblog.west-wind.com/posts/2012/Aug/07/Where-does-ASPNET-Web-API-Fit
Polecam również porównanie poszczególnych technologii:
http://www.dotnet-tricks.com/Tutorial/webapi/JI2X050413-Difference-between-WCF-and-Web-API-and-WCF-REST-and-Web-Service.html
oraz artykuł z MSDN:
http://msdn.microsoft.com/en-us/library/jj823172(v=vs.110).aspx
Polubiłem WCF za łatwość robienia złączeń po stronie klienta i wysyłania złożonych zapytań z pomocą OData. To mi ułatwiało robotę w aplikacjach raportowych. A teraz trudno mi się uwolnić. :)