【问题标题】:recommendation for choosing a new web development stack选择新的 Web 开发堆栈的建议
【发布时间】:2023-03-26 22:13:01
【问题描述】:

我在一个中小型团队(10 人)中工作,开发和支持多个 Web 企业应用程序。

我们有十几个使用自制框架构建的,其中 asp-classic 与 ms-sql 服务器配合使用。

我们正在评估向新开发堆栈的迁移。

我们希望它开放(免费)且简单。

我一直在寻找 java web 框架,但它们似乎都非常适合我们的需求(http://www.playframework.org/ 可能是个例外,我还无法研究...)

我们正在考虑将我们自己的框架移植到这个新堆栈,而不是采用我们不知道的全新堆栈...

到目前为止,我们想到了以下几种可能性

  • 纯 java - jsp - jsf

  • groovy - gsp(根本没有 grails)

  • jruby(完全没有导轨)

我们对使用动态语言(当然,就像经典的 asp 一样动态)和精简且易于理解的框架感到非常自在...

我没有看到用于 java 的小而简单的 web 框架,例如用于 php 或 ruby​​...

我真的很喜欢 groovy,但我看不到 grails 之外的 Web 实现...此外,语言文档似乎并不完整(也许我找错地方了)

php 可能是一种选择,但我认为在我目前的工作中很难提倡它......

还有其他选择、建议、利弊吗?

非常感谢

-- 编辑

一些相关链接Can anyone recommend a simple Java web-app framework?

【问题讨论】:

  • 我们非常喜欢 grails,但我们害怕所有我们没有经验的底层框架(hibernate、spring 等)。我读过 grails 非常适合有艰难构建 Java Web 应用程序经验的团队...
  • Grails 是一个快速的应用程序开发框架。 grails 的全部要点是它是为没有经验的人准备的。
  • 这应该是社区维基。 :D
  • 你不喜欢这些框架,因为它们感觉臃肿?伙计,一旦您不断将所有新功能融入其中,您自己的框架将在 3 年内变得臃肿。我会避免使用臃肿作为要考虑的功能集,因为你想要这个问题。

标签: java groovy jruby


【解决方案1】:

我建议您再看看 Grails。它确实使用了 hibernate 和 spring,但在大多数情况下,您不需要了解这些框架的详细信息。有一个庞大的社区和大量的文档/博客/邮件列表来获得支持,还有一个蓬勃发展的插件社区,其中包含 300 多个插件,几乎可以解决任何需求。

如果您仍然对 grails 感到厌烦,您可以查看play framework。我对它没有任何经验,但最近在黑客新闻等上出现了一些关于它的流量。我知道它使用 groovy 作为模板语言。

【讨论】:

  • 刚刚注意到您在帖子中提到了游戏框架。我仍然建议使用快速原型来尝试 grails。
【解决方案2】:

我不能推荐任何东西,但强烈建议您考虑以下事项:

  • 发展迅速。基本上你想保存一个页面文件,然后在浏览器中重新加载它。即刻!可以做到,不要满足于长时间的部署。
  • 简单易读的文本文件!
  • 约定编码而不是显式编码 - 大型 XML 文件最终会使一个或多个开发人员发疯。越少越好。
  • 良好的工具支持(仅使用语法着色可能会有很大帮助)
  • 考虑您选择的长期支持。你基本上是在和你的软件再婚——它还会在 10 年后维护吗?通过谁?你有替代品吗(JSR 很棒 - 看看 servlet 引擎的数量)?

当您选择时 - 获取它的源代码,并确保它正确构建。它永远不会比现在更容易,总有一天你需要修复内部的一些东西。临时通知! (您甚至可以考虑分配资源以向您正在建立业务的开源项目捐赠文档/补丁/时间)。


编辑:还有一些事情:

  • 您希望能够在编译时进行验证。使在 Java 中构建大教堂成为可能的一件事是静态类型检查可以防止许多令人讨厌的运行时错误。 “哦,那个方法?嗯,它不在这里,抱歉。轰!”
  • 您希望良好错误报告。内置!尝试深入、深入地抛出 NullPointerException,看看 1) 用户和 2) 开发人员被告知了什么。任何需要转到日志文件来获取详细信息的事情最终都会在凌晨 3 点引起呼叫。
  • 从一开始就考虑可扩展性。任何重要的客户都需要,世界转向多核,所以您现在不妨考虑一下。当所有神奇的小精灵性能尘埃都用完但还不够时,您会怎么做:该应用程序需要的不仅仅是一个盒子。

请阅读:http://www.pragprog.com/titles/mnee/release-it

【讨论】:

  • 我看到了一个非常令人信服的 JavaServer Faces 版本 2 的演示,我将研究它,因为我们有一个需要升级的现有版本 ONE 应用程序。但是版本 ONE 有很多痛点,如果没有实际战斗经验,我不建议朝那个方向走:D
  • 我现在已将 JSF 版本 ONE 应用程序迁移到带有 facelets 的版本 2。如果你能得到一个支持的容器来运行它,它会好很多。如果没有,Glassfish v3 是好的。
【解决方案3】:

您忘记了该领域的另一个主要参与者:LAMP stack(linux、Apache、MySQL 和 mod_perl)。所有组件都是免费的,有很多关于 LAMP 开发和这些组件的书籍,并且已经有大量的库和组件可用。

【讨论】:

  • P 应该是 PHP 而不是 Perl。
  • 你说得对,事实上我觉得使用 php 很舒服,但正如我所说,lamp(也不是 ruby​​,也不是 python)不是我工作的选择,它是 .net 或 java ...
  • @opensas:你没这么说。你刚才说你想要“开放(免费)和简单”。
  • 您说“PHP 可能是一种选择”。灯栈可以与 Java 一起使用——例如 Apache Tomcat,所以不要太快把它写下来,它是目前最可靠的托管平台。与您的其他开发人员讨论一下,他们可能喜欢使用比 ASP、.NET 或 Java 更简单和更复杂的东西。
  • 对不起,我应该更明确一点...我同意你的观点,Lamp(在这种情况下是 wamp)堆栈比.net 或 java 更易于部署...我认为我无法说服 IT 人员...
【解决方案4】:

如果您害怕 Grails 并需要 Java,请尝试 Stripes 并阅读优秀的 Stripes 书籍 (http://www.stripesbook.com/blog/)。您可以以 23 美元的价格购买电子书 pdf。这本书以惊人的细节涵盖了这个框架。 Stripes 是一个非常强大、轻量级的 MVC 框架,可以处理 Web 开发的所有常见问题(模板、url 映射、表单验证、安全性、国际化、测试),但除非您需要,否则它不会自动为您创建数据库层通过使用 Stripernate。您也可以使用 Groovy。您可以单独使用它,也可以与 Spring 一起使用。

【讨论】:

    【解决方案5】:

    我在使用Spring MVC 和JSTL JSP 的简单Web 项目中取得了巨大成功。 Spring MVC 是一个可以保持非常简单的框架(一个额外的 XML 文件用于配置)。您可以避开所有花哨的选项,只需指定一组要与视图名称关联的 JSP,然后通过在控制器中指定它们的名称来转发到这些视图。

    Spring MVC 还可以根据需要轻松扩展和复杂化,让您可以使用 Tiles、Struts、JSF 或 Wicket 从 JSTL 切换到 JSTL。它还可以使用Spring Web Flow 项目处理复杂的网络流。但对于大多数项目,我只是保持简单——构建一个 JSTL JSP,创建一个控制器来提供 JSP 需要的对象,并通过让控制器返回该视图来关联它们。设置好项目并熟悉配置后,可能需要几分钟时间才能将新页面连接到位。

    【讨论】:

      【解决方案6】:

      如果你喜欢 Groovy 但不喜欢 Grails,你可以试试Gaelyk,这是一个轻量级的 Groovy 框架。但是,AFAIK 只有在 Google App Engine 上托管应用程序时才能使用 Gaelyk

      如果您的应用程序不会托管在 GAE 上,并且您真的不想使用 Grails,那么另一种选择是使用 GroovletsGroovy template servlet、GSP。

      但是,我个人认为解雇 Grails 是一个很大的错误。它确实是一个很棒的框架,你可以在不了解 Spring 和 Hibernate 的情况下走很长一段路。您的抱怨之一是缺少 Grails 文档。我想你一定是找错地方了,因为除了所有可用的书籍之外,还有一个非常广泛的reference document 和许多其他可用的文档on the website。最后,还有一个很活跃的mailing list

      【讨论】:

      • 感谢您的建议,我一定会尝试 grails... 完全不在主题范围内,是否可以 dbug gsp 页面?我还是找不到办法?
      • 我还没有找到自己调试 GSP 的方法,但是 GSP 中的大部分逻辑都应该封装在 TagLibs 中,并且可以像任何其他 Groovy 代码一样轻松调试。跨度>
      【解决方案7】:

      我选择的平台是 JRuby - Rails (3),因为它的生态系统非常丰富和强大,但主要是因为:
      * 非常容易使用
      * 许多图书馆
      * 通过 IRC 快速支持
      * 深度文档

      您还可以查看 Scala + Lift Web 框架(恕我直言,最好的静态类型语言,不错的框架)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-09-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-12
        • 2017-09-23
        相关资源
        最近更新 更多