Few folks asking me – When to use Web API over WCF. Many technical blogs have given uses of both WCF and Web API and their primary differences. It’s not so difficult to decide on right technology for service until unless we have clear picture/vision on the consuming clients/applications and their dependency factors. I will try to post my comments on when to use which technology. Post me your suggestions/comments on the same.
When we decided to have a service layer in our application(s) for sure there would be depending factors on the service(s).
If the application designed under service oriented architecture, then we may go for WCF as it is a development platform for SOA. We can keep WCF features aside for a while, it provides multiple transport protocols. It’s time to think what sort of protocols client would use to consume the service. If INTRA-net application consumes the service, then we can deliver TCP end-point. If another client wants to have it thru HTTP, we can also deliver HTTP end-point, etc.
If services need to consumed by broad range of clients including desktop/laptop browsers, mobiles, iPhone and tablets, IoT, WPF client, Windows 8 Phone, Windows Surface devices etc. then we can use light weight RESTful service which is a Web API.
Unlike WCF Restful service, it uses full features of HTTP (like URIs, request/response headers, caching, versioning, various content formats) and you don't need to define any extra config settings for different devices unlike WCF Rest service.
ASP.NET Web API is an ideal platform for building RESTful applications on the .NET Framework.
We can leverage WCF to build secure, reliable, and transactional services that can support messaging, duplex communication and fast transport channels like, TCP, Named Pipes or UDP.
In other note, we shouldn’t compare Web API with MVC, those are totally unrelated thing. MVC is an architecture or design pattern to build application, on the other hand API's are built as a component of application.
We will find features/advantages/differences from google anyway, so I am not talking on this here.