MVC 或 Rest 或两者兼而有之

Posted

技术标签:

【中文标题】MVC 或 Rest 或两者兼而有之【英文标题】:MVC or Rest or Both 【发布时间】:2011-06-17 22:27:37 【问题描述】:

我正在设计一个基于 Web 的用户界面的服务器端,这将是 javascript 密集型的。

我最初想使用 MVC 解决方案,但现在我想使用基于 REST 的解决方案,例如 Jersey 或 Restlets。

这通常是一种或另一种类型的决定,还是可以作为一种组合解决方案?

谢谢, 迈克

【问题讨论】:

MVC 和 REST 是完全不同的概念。 rest 和 MVC 有什么共同点? 您是指基于请求的 MVC 还是基于组件的 MVC 框架? 【参考方案1】:

MVC 是关于应用程序内部如何工作的。

REST 是关于您的应用如何与其他应用“对话”的。

你可以把它们组合起来。

许多现代框架实际上都是基于 MVC 的,并且可以轻松实现 REST Web 服务:Ruby on Rails、带有 SpringMVC 的 Java Spring Framework、Django、Backbone.js

【讨论】:

MVC 是一种设计模式,用于创建关注点分离并避免紧密耦合的数据、业务和表示逻辑。 REST 是关于与无状态资源交互的。 Spring 本身并不是一个 MVC 框架。 RoR 的 Java 表亲是使用 Groovy 的 Grails。 正如您在稍后的回答中指出的那样“我见过的用于构建能够支持 REST 的 MVC Web 应用程序的最佳 Java 框架之一是 SpringMVC” 当我阅读到目前为止的回复时,我意识到我可能应该更具体一点。我确实了解 MVC 和 REST 之间的区别。我认为我的问题与我正在使用的框架有关。我正在使用 FrontMan。它是使用前端控制器的轻量级 Java MVC 框架。所有请求都从前端控制器分派到适当的类以处理请求。 myserver.com/myapp/doSomething myapp/* 被映射到前端控制器我想知道如何处理 REST 请求。我认为他们不应该通过前端控制器 是的,他们应该这样做。对 myserver.com/myapp/resource 等资源的纯 HTTP 请求中的 REST 请求。【参考方案2】:

它们是解决不同问题的模式/解决方案。

REST 为用户、客户端软件等清理并简化了对 Web 应用程序功能的寻址访问。

MVC 提供了一种组织应用程序代码的方法,使其更易于维护。

【讨论】:

【参考方案3】:

SpringMVC 是我见过的用于构建能够支持 REST 的 MVC Web 应用程序的最佳 Java 框架之一。 This blog post 概述了自 3.0 版以来 SpringMVC 中的 REST 功能。我使用 SpringMVC 和 Jersey 开发了 REST 服务,它们具有相当的可比性。

【讨论】:

这是一个视频,可引导您从头开始构建一个,并且比自 Spring 3.2 以来的博客文章更新:pluralsight.com/training/Courses/TableOfContents/…【参考方案4】:

MVC 是一种适用于应用程序层的架构设计模式。

文件夹结构:

Models/YourClassModel.php
Views/Home/HomeView.php
Controllers/Controller.php
index.php

应用程序样式REST 是应用程序的具象状态转移

【讨论】:

以上是关于MVC 或 Rest 或两者兼而有之的主要内容,如果未能解决你的问题,请参考以下文章

Spring MVC REST - 根据请求内容类型返回 xml 或 json

删除 TabPage:Dispose 或 Clear 或两者兼而有之?

.NET 是不是使用并发性或并行性或两者兼而有之? [关闭]

使用 passport-saml 注销:req.logout() 或 Strategy.logout(),或两者兼而有之?

Bootstrap 是 css 还是 javascript 框架或两者兼而有之? [关闭]

MouseDragged 作品或 mouseMoved 作品,但不是两者兼而有之