I recently came up against the same choice: I'm writing a rich web application with MVC3 for server-side and needed to host restful services for those pages to hit.
I ended up going with using MVC3, and so far it has been working very well. With WCF it feels like there is a lot of boilerplate and configuration you have to do just to get started, and very little benefit if you never plan on exposing the services any way other than REST.
All it takes is a controller that returns a JsonResult. The syntax is also really neat. The Json
method takes any plane old object and serializes it to json, which makes it really easy to use Linq to project your data to anonymous types that give a very clear indication of what you are returning:
return Json(new
{ tasks = _TaskList.Where(t => t.Active)
.Select(new {name = t.Name, status = t.Status, owner_id = t.Owner.Id})
});
Now, you also mention having no model. But your controller must be executing some sort of business logic, correct? You want your controller to still be relatively thin, it should be delagating the real work to the "model", whether this is another class, a library another service, whatever.