代码之家  ›  专栏  ›  技术社区  ›  Morgan Cheng

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

  •  17
  • Morgan Cheng  · 技术社区  · 16 年前

    对于ASP.NET MVC,通常使用Ajax代码(例如jquery)从服务器调用Web服务而不刷新页面。让Web服务变得宁静是很自然的。似乎有两种方法。首先,ASP.NET MVC URI是RESTful的,很容易让某些控制器/操作充当Web服务方法。第二,自3.5版以来,wcf可以是RESTful的。

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

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

    4 回复  |  直到 14 年前
        1
  •  12
  •   Jacob    16 年前

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

    关于ASP.NET管道,我假设您担心整个页面生命周期的事情。只有在将视图与WebFormViewEngine一起使用时,才会执行页面生命周期。框架提供 JsonResult 为了方便JSON对操作结果进行序列化,这将完全绕过ASP.NET页的生命周期。类似的类可用于XML、RSS等。

        2
  •  6
  •   Piers Lawson    16 年前

    在我的博客上 http://shouldersofgiants.co.uk/Blog/ 我已经编写了一个系列,介绍如何使用ASP.NET MVC来提供一个RESTful Web服务(如果这有帮助的话)。

        3
  •  3
  •   Eran Kampf    16 年前

    您必须区分Ajax调用和RESTAPI,从某种意义上说,Ajax调用是在应用程序上下文中进行的,并且可以依赖应用程序上下文进行会话、身份验证等操作。 然而,RESTAPI是您为全世界提供的一组API,因为它可以依赖于您的应用程序来进行身份验证之类的事情,它为保护来自客户机的调用带来了全新的复杂性。

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

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

        4
  •  0
  •   aaimnr    14 年前

    使用WCF堆栈的另外一个优势是,在使用WCF数据服务/OData的鼠标点击很少的情况下,可以公开CRUD和数据探索所需的所有接口。( spec , demo ,前提是您的数据层是使用实体框架实现的。

    我正在考虑将这些基本的RAD接口与使用常规MVC构建的更复杂的事务性服务的附加层结合起来。这种组合看起来不太优雅,但就生产率而言,它可能是有益的。