使用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慢吗?
答案 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)