WCF Web API vs ASP.NET MVC JSON web services

What is the advantage of using new WCF Web API over ASP.NET MVC 3 to expose a lightweight JSON Web service layer? I like Web API in many ways, but the drawback is that it doesnt work on mono, while MVC 3 does. What are the major differences between the two approaches?


It is recognized by Microsoft, that there is some overlap between the two products. However, they do have a different focus:

  • If you are building a web site that consumes JSON from your web service then MVC is probably the best choice.

  • If you are building an API intended to be consumed by a variety of third party clients then WCF Web API is the best choice.

My own personal reasons include the fact that with WCF Web API means I can self-host in a Windows service, and I can avoid ASP.NET, web.config and Cassini :-)

Updated 6/24/14 by request:

What is now ASP.NET Web API (formerly WCF Web API) and ASP.NET MVC will formally merge in what is currently dubbed ASP.NET vNext (MVC 6).



Original answer:

It was announced yesterday (2/8/2012) that the projects are formally merging. See:




The c4mvc link should be updated with a link to Dan Roth's presentation soon.

I believe this question targets new WCF Web API and because of that it is not the same as question linked as duplicate.

WCF Web API removes some limitations of current WCF Rest support but the main disadvantage of the Web API is that it is only a draft - currently preview 4. It has no support and probably it is not supposed to be used in production environment. Also any new version can introduce breaking changes or remove whole set of features available in previous version. Because of that you should use ASP.NET MVC to build lightweight JSON service layer.

The differences are night and day. MVC Framework is not a web service layer. If you truly need a web service to be consumed by varying clients (and possibly on varying platforms) then you are left to choose between a WCF-based web service or an old-fashioned XML web service.

Need Your Help

java socket writeUTF() and readUTF()

java sockets

I've been reading some Java socket code snippet and fonund out a fact that in socket communication, to send messages in sequence, you don't have to seperate them by hand, the writer/reader stream d...

Compile a Standalone Static Executable

c++ compiler-construction linker executable

I'm trying to compile an executable (ELF file) that does not use a dynamic loader. I built a cross compiler that compiles mips from linux to be used on a simulator I made. I asserted the flag -st...