【问题标题】:What language (Java or Python) + framework for mid sized web project?什么语言(Java 或 Python)+ 用于中型 Web 项目的框架?
【发布时间】:2011-03-26 13:42:12
【问题描述】:

我打算开始一个中型 Web 项目,你会推荐什么语言 + 框架? 我知道Java和Python。我正在寻找简单的东西。

App Engine 是一个不错的选择吗?我喜欢整体的简单性和免费托管,但我担心数据存储(让它像标准 SQL 解决方案一样快有多困难?+ 我需要全文搜索 + 我需要通过几个参数过滤对象)。

带有条纹的 Java 怎么样?除了 Stripes,我还应该使用其他框架吗(例如用于数据库)。

更新: 感谢您的建议,我最终决定将 Django 与 Eclipse/PyDev 一起用作 IDE。 Python/Django 简单而优雅,被广泛使用并且有很好的文档。一个小缺点是我可能必须购买一个 VPS,但将项目移植到 App Engine 上应该不是很难,它在某种程度上是免费的。

【问题讨论】:

    标签: java python google-app-engine web-applications stripes


    【解决方案1】:

    KayTipfy 是专门针对 GAE 的优秀 Python 框架选择。 Kay 以 Django 为模型并与 Django 相似,但更适合 GAE。

    【讨论】:

      【解决方案2】:

      App Engine 是一个不错的选择吗?我喜欢整体的简单性和免费托管,但我担心数据存储(让它像标准 SQL 解决方案一样快有多困难?+ 我需要全文搜索 + 我需要通过几个参数过滤对象)。

      App Engine 不错。它支持 Pyhton 或 Java(有一些 limitations),它为小需求(很少,至少对于 Java)提供免费托管。但我不希望与专用服务器完全相同的性能,云是关于可扩展性,而不是性能(你不会总是获得单次点击的最快响应时间;但是,GAE 将处理大量的并发点击而无需任何当您的服务器着火时出现问题)。但是这种可扩展性并非没有成本,如果您不需要它,开发权衡可能会太麻烦。还要注意它does not support full text search 开箱即用(真是讽刺),你将不得不使用额外的工具。

      带有条纹的 Java 怎么样?我是否应该使用 Stripes 之外的其他框架(例如用于数据库)。

      我非常喜欢条纹。我喜欢它的约定优于配置方法,它是一个非常优雅和简单的框架(但仍然很强大)。绝对不是一个糟糕的选择。对于持久性,如果您选择 GAE,则必须使用 JPA 或 JDO。如果您不这样做,则由您自行决定(尽管我会选择 JPA)。

      另见

      【讨论】:

      • 也许您可以在这里详细说明性能和可扩展性之间的实际区别是什么?为什么 App Engine 的性能会比专用服务器差?
      • @Nick 我不会在这个问题上花太多时间,但我试图澄清一下(我只是不打算解释为什么我认为可扩展架构与基于优化速度)。
      • 我在 GAE 中所做的 95% 的事情都有出色的表现。但最后 5% 的比例元素可能有些道理。可以公平地说数据存储写入在分布式架构中更昂贵吗?当然,另一方面是分布式环境为您的应用程序的其他方面提供了性能优化。因此,这在很大程度上取决于您正在构建的应用类型。
      【解决方案3】:

      去年,我在 GAE(使用 Python)上构建了几个应用程序。您可以轻松地快速启动并运行应用程序,这是无可比拟的。不要仅凭这一点就打折价值。

      虽然您可能还不了解数据存储,但它的文档非常完善,并且有大量资源(包括这个资源)可以帮助您解决可能遇到的任何问题。

      【讨论】:

        【解决方案4】:

        Google App Engine + GWT 是开发网络应用程序的强大组合。数据存储非常快,到目前为止,它对我来说已经很好地完成了这项工作。

        在我的项目中,我不得不对我的数据库模型进行大量重新设计,因为它是为传统的关系数据库设计的,而数据存储区无法(直接)完成一些事情。

        GWT 的学习曲线相当适中,但它可以很好地完成工作。 gui 代码很容易上手,但异步的思维方式才是最难的部分。

        至于搜索,我认为框架不支持它。可以对参数进行过滤。

        GAE 有一些限制,您应该在将所有鸡蛋放入该篮子之前考虑这些限制。如果 GAE 的限制成为问题,GAE 使用 J2EE 分发标准这一事实使得应用程序很容易迁移到专用服务器。事实上,我认为你只需要重构代码中查询和存储数据的部分(不应该超过 100 行)。

        【讨论】:

        • 对于 GWT 的 python 端口,请查看睡衣 (pyjs.org)。它将 Python 代码编译为 Javascript,或者您可以在桌面上本地运行代码。
        【解决方案5】:

        这取决于你的个性。这个问题没有正确答案,就像“我应该开什么样的车?”一样没有正确答案

        如果您有艺术天赋并且认为代码应该是美丽的,请使用 Rails。

        如果您是真正的黑客类型,我认为您会发现 Rails 或 Django 等全栈框架并不令人满意。这些框架是“自以为是”的软件,这意味着您必须真正接受作者的愿景才能最高效。

        在 Python 世界中 Web 开发的美妙之处在于有几个很棒的最小框架。我用过几个,包括 web.py、GAE 的 webapp 和cherrypy。这些框架就像“这是一个请求,给我一个字符串来服务”。它是生的。不要认为你会被困在 Python 连接字符串中,上帝不会。还有几个优秀的 Python 模板库。我个人可以推荐 Cheetah,但 Mako 看起来也不错。

        【讨论】:

          【解决方案6】:

          生活中有很多事情,这取决于你的目标是什么。如果您打算学习用于企业环境的 Web 框架,请选择 Java 解决方案。如果没有,不要。 Python 在几乎所有方面肯定更优雅,通常也更有趣。

          至于使用哪个框架,django 最受关注,这可以从这里提出的问题数量证明。我的理解是它也很好。不过,它最适合类似 CMS 的网站 - 至少这就是它的来源和优化的目的。您还可以看看其中一种更简单、更灵活的方法,例如相对较新的flask。所有这些都很有趣,尽管它们可能不具备 AppEngine 上的所有功能。

          【讨论】:

          • 我喜欢 Java,因为它有一个 suberb IDE (Eclipse),而且它是一种静态语言,它有几个优点,尤其是在大型项目中。但我选择了 Python + django - 正如你所说,Python 更有趣,我也非常喜欢 django。
          【解决方案7】:

          我不认为数据存储有问题。许多人会因为想要一个标准的关系数据库而立即拒绝它;如果您愿意考虑一般的数据存储,那么我怀疑您会对 GAE 数据存储有任何问题。就个人而言,我很喜欢它。

          可能会让您失望的是操作限制。例如,您是否知道 HTTP 请求必须在 10 秒内完成?

          如果您完成项目的 50%,然后发现您正在使用的 Web 服务有时需要 15 秒才能响应,该怎么办?现在你是吐司。你不能支付额外的费用来提高限制或类似的东西。

          所以,我的意思是,您必须非常小心地接近 GAE。在开始使用之前了解这些限制并确保它们不会成为问题。

          【讨论】:

          • 我同意有关数据存储的观点。但是......请求处理程序有 30 秒的时间来完成。不是 10。
          • @Greg:qwavel 指的是传出的 HTTP 请求 (urlfetch),正如他的以下段落所阐明的那样。
          【解决方案8】:

          我已经开始使用 App Engine 了,到目前为止,DataStore 还是相当快的……与 SQL 相比,学习曲线有一点点,但我没有遇到真正的问题。我不确定全文搜索,但是过滤很简单,您只需一次运行每个过滤器。

          class DBModel(db.Model):
              field1 = db.StringProperty()
              field2 = db.StringProperty()
              field3 = db.IntegerProperty()
          
          GQLObj = DBModel.all().filter('field1 =', 'Foo')
          GQLObj = GQLObj.filter('field2 =', 'Bar')
          

          就托管而言,我不确定您是否可以选择使用 GAE,但我知道您可以使用 google 注册自己的域。

          【讨论】:

            【解决方案9】:

            既然你提到了 python,我建议你研究一下Django。但是,您可能需要更加努力地寻找托管选项...

            【讨论】:

            • 我挺喜欢django的,python/django用什么开发环境好?
            • 周围有一些低成本的托管商可以很好地进行 Django 托管。我对 Webfaction 很满意。此外,Django 项目可以托管在 AppEngine 中。
            • 最近在 Django 用户邮件列表上有一个关于这个(开发环境)的线程。出现了很多很棒的选择:groups.google.com/group/django-users/browse_thread/thread/…
            • 我最终决定使用 Django 和 Eclipse + PyDev 作为 IDE。