【问题标题】:Is MVC RESTful by designMVC 是 RESTful 设计的吗
【发布时间】:2012-03-05 17:53:54
【问题描述】:

MVC 必须是 RESTful 的吗?

有没有办法使用MVC 模式制作SOAP 服务?

输入请求是否会先进入View,然后进入Controller,然后进入Model,例如:

Request -> View -> Controller -> Model

但是这样做,这不再是 MVC 模式。 (对吧?)

否则我们如何使用SOAP 获得键入的响应,但仍坚持(或接近)MVC 模式。 MVVM 会更适合这种情况吗?

【问题讨论】:

  • 我不明白为什么 MVC 会受到如此多的关注。
  • @duffymo 我同意...这不是我的选择
  • @duffymo 和 Seph > 您使用什么技术?
  • 我对 MVC 没有任何问题。它与服务、REST 或 SOAP 无关,因为它们没有视图。您正在应用一个没有业务的流行词/模式。
  • @duffymo 问题是我的老板将不同的返回格式(xml/json)视为“视图”......更多所以他相信我们可以将“html 视图”添加到我们的“MVC API”中然后我们将拥有一个完全正常工作的网站——而不是将网站设计为使用 API 作为 API 或拥有自定义后端或类似的任何东西......现在我们有一个 API 可以返回进行其他 API 调用的 html 页面也返回 html 页面。这是一团糟:)

标签: .net wcf model-view-controller rest soap


【解决方案1】:

REST 描述了您如何与应用程序交互,而 MVC 描述了您如何实现应用程序。使用 MVC 实现的应用程序可以是 RESTful 的,也可以不是。

SOAP 是一种与应用程序交互的协议,可以使用 MVC 来实现。

在 MVC 中,请求进入控制器,控制器为视图创建模型。

Request -> [Controller] -> Model -> [View] -> Response

【讨论】:

  • 要使类型化 SOAP 工作(例如:WSDL),您仍然需要将请求包装在类型安全的包装器中,不是吗?
【解决方案2】:

HTTP 被设计为 RESTful。关于什么是 REST 的详细讨论是 here。 MVC 对是否是 RESTful 没有任何限制。 ASP.Net MVC 支持 REST 风格的 Web 开发。您可以使您的网站 RESTful 或不使用,这是您的选择。 SOAP 是协议。在.Net 中最好使用WCF 来处理SOAP。 WCF 服务可以与您的 ASP.Net MVC 应用程序一起部署。但是我们在 WCF 中没有 MVC 实现。一般来说,我们在 Web / WCF 服务中根本没有 UI 部分。

【讨论】:

    【解决方案3】:

    请求被路由到控制器上的操作,该操作使用模型(您定义的模型;它只是表示您的操作和视图将操作的数据的结构)。此操作返回一个ActionResult,它通常是但不一定是ViewResult(它基本上只是使用您指定的模型执行您指定的视图页面,如果有的话)。但是,您不必返回视图;你可以创建任何你想要的 ActionResult。您可以返回 XML、JSON、SOAP、二进制内容等等。

    MVC 本质上是宁静的,但它并不严格遵循 REST,并且可以根据您认为合适的方式进行定制。您可以让您的控制器使用 SOAP,但我的问题是,如果其他技术(例如 WCF)已经为您完成这项工作,您为什么要这样做?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-14
      • 1970-01-01
      相关资源
      最近更新 更多