【问题标题】:MVC in a Google App Engine Java worldGoogle App Engine Java 世界中的 MVC
【发布时间】:2010-10-26 02:37:03
【问题描述】:

我从 C# 和 ASP.NET MVC 转向 Java,我很想在 Java 世界中找到一个可以在 Google App Engine 上使用的等价物。我已经开始尝试FreeMarker,甚至迈出了编写一个非常简单的框架的第一步。理想情况下,我不必做所有艰苦的工作,一定有人已经这样做了!所以我的问题是 - 有哪些框架对我来说是熟悉的,来自 ASP.NET MVC,我可以在 Google App Engine for Java 上使用它们。

我想要的关键是:

  • 简单路由 - /products/view/1 被映射到 productid 为 1 的产品控制器的视图操作
  • 模板引擎 - 某种轻松将“ViewData”传递给视图的方式,并从视图轻松访问它,理想情况下我希望避免任何过于 XMLy 的东西(这就是为什么我喜欢 FreeMarker )。

【问题讨论】:

标签: java model-view-controller google-app-engine frameworks


【解决方案1】:

Play 框架符合要求。它是一个现代的 Java MVC 框架,并有一个 Google App Engine 模块来提供兼容性。见http://www.playframework.org/modules/gae

使用 Play 的另一个好处是可移植性。您可以使用其内置的网络服务器(可选地在 apache 后面进行缓存、负载平衡等)部署 Play,或者您可以捆绑为 .war 文件以部署到许多 Java 应用程序服务器(Glassfish、Tomcat...)。

【讨论】:

    【解决方案2】:

    您应该考虑几个 MVC 框架(这就是我现在正在做的事情)。最初,我使用 Spring MVC (3.0),GAE 的冷启动太可怕了!启动大约需要 10 秒(而且我什至没有使用任何复杂的东西,比如 spring security 等),所以我需要使用 cron 作业来保持它的活力。所以我不建议你在 GAE 上使用 Spring。

    看看以下框架:

    VRaptor

    Slim3

    Google Sitebricks

    至于模板,我使用Sitemesh -- 使用了很长时间,所以不需要切换。

    希望这会有所帮助!

    【讨论】:

      【解决方案3】:

      我也非常喜欢 Freemarker。我建议你看一下 Induction 框架,它的模板引擎是可插拔的,但默认支持的是 Freemarker。 Induction 是一个轻量级且快速的 MVC 框架(7.7K 行),但具有许多主要 MVC 框架所没有的特性,例如:

      • 在开发期间更改控制器、视图或模型时动态重新加载
      • 文件上传如此简单(与字符串输入没有太大区别)
      • 控制器无需配置
      • 能够使用 IDE 分析模型、视图和控制器之间的依赖关系
      • 基于正则表达式的 URL 映射
      • 对管理任何 MVC 框架的重定向的最佳支持

      至于@pjesi 提出的文件上传问题,Induction 允许您设置文件写入磁盘的大小阈值。如果这个设置足够大,它不应该尝试将任何文件写入磁盘。

      在此处查看入门教程:http://www.inductionframework.org/getting-started-tutorial.html

      【讨论】:

        【解决方案4】:

        我目前正在使用 Spring MVC 开发 Google App Engine 应用程序。它比 ASP.NET MVC 成熟得多,所以你不应该失望。作为额外的奖励,您拥有 Spring 的全部 IoC 功能。

        对于视图层,我正在尝试 Velocity。这很简单,但我还没有决定是否更喜欢它而不是 JSP。我简要了解了 FreeMaker,但不喜欢我所看到的。如果你想远离 XML'y JSP 模板,我建议你试试 Velocity。

        我在 GAE 上使用 Spring 时遇到的唯一问题是文件上传。 MultipartResolver 实现都依赖于一个临时文件目录。在编写了我自己的实现之后,我又回到了在我的模型中无缝上传文件。

        【讨论】:

        • 出于兴趣,您使用的是 Spring 2.5 还是 3.0?
        • 我使用的是 2.5,一旦它在全球 Maven 存储库中,我可能会切换到 3.0。
        【解决方案5】:

        JavaServer Faces (JSF) 我听说类似于 microsoft MVC 框架。 (我使用 JSF,但从未使用过 .NET MVC)。而且我相信 JSF 1.1 在 Google App Engine 上运行良好,而且我怀疑如果您坚持使用 XHTML 而不是 JSP 作为模板,新版本的 JSF 也能正常工作。还有一些不错的库可以让您利用 JSF 框架上的 AJAX 接口,RichFaces 是一个流行的库。 退房 JavaServer Faces on sun.com 并且 JBoss RichFaces

        【讨论】:

          猜你喜欢
          • 2013-03-30
          • 1970-01-01
          • 2013-07-06
          • 2015-07-22
          • 2021-10-19
          • 2011-07-05
          • 1970-01-01
          • 2015-03-05
          • 2011-06-19
          相关资源
          最近更新 更多