选择哪个:ASP.NET MVC或RESTful WCF?

时间:2008-12-08 14:29:59

标签: asp.net-mvc wcf rest

使用ASP.NET MVC,通常有AJAX代码(例如jQuery)从服务器调用Web服务而不刷新页面。使Web服务RESTful是很自然的。似乎有两种方法可以去。首先,ASP.NET MVC URI是RESTful,很容易使一些Controller / Action充当Web服务方法。其次,从版本3.5开始,WCF可以是RESTful。

那么,这两种方式的利弊是什么?

对ASP.NET MVC的请求将通过ASP.NET管道。这会使它比WCF慢吗?

4 个答案:

答案 0 :(得分:12)

如果您已经在网站的其余部分使用ASP.Net MVC,我认为为AJAX调用使用相同的框架也是有意义的。

关于ASP.Net管道,我假设你担心整个页面生命周期的事情。仅当您使用带有WebFormViewEngine的Views时,才会执行页面生命周期。该框架提供了JsonResult,以便轻松地对动作结果进行JSON序列化,从而完全绕过ASP.Net页面生命周期。类似的类可用于XML,RSS等。

答案 1 :(得分:6)

在我的博客上http://shouldersofgiants.co.uk/Blog/我已经整理了一系列关于使用ASP.Net MVC来提供RESTful Web服务的系列文章。如果有帮助的话。

答案 2 :(得分:3)

您必须将AJAX调用与REST API区分开来,因为AJAX调用是在应用程序的上下文中进行的,并且可以依赖于应用程序上下文来处理会话,身份验证等。 然而,REST API是您为全世界提供的一组API - 因为它可以依赖您的应用程序进行身份验证等事务,从而为保护客户端的呼叫等带来全新的复杂性。

如果您只需要应用程序的JS与服务器通信,那么使用MVC控制器是最简单的直接解决方案。

如果您希望这些API与您网站的MVC代码分开(用于部署目的等),或者您需要REST API供其他人用来调用您的应用程序 - WCF。

答案 3 :(得分:0)

使用WCF堆栈的其他优点是可以使用WCF数据服务/ ODATA(specdemo)在几次鼠标点击中暴露CRUD和数据探索所需的所有接口您使用Entity Framework实现了数据层。

我正在考虑将这些基本的RAD接口与使用常规MVC构建的其他更复杂的事务性服务层相结合。这种组合似乎并不太优雅,但就生产力而言可能是有益的。