【问题标题】:Which web framework should I choose?我应该选择哪个 Web 框架?
【发布时间】:2011-02-24 03:11:12
【问题描述】:

我是一名 Java 开发人员。我想自己开发一个网站。我想选择一个快速的 Web 应用程序框架。我有一些spring mvc的经验。现在我想知道是否应该选择另一个 Web 框架。这是我想要的清单:

  1. 快速开发
  2. 易于保护
  3. 易于验证
  4. 易于与数据库通信(mysql 或 NoSql)

我听说过 ruby​​、python、groovy 和 scala。我应该将这些包括在我的选择中吗?这些需要多少额外的努力?我应该把时间花在这些上还是留在 Java 世界里?请给我一些建议。

非常感谢。

【问题讨论】:

    标签: web-applications


    【解决方案1】:

    如果您愿意考虑使用 Python(听起来像),您应该查看web2py

    1. 它的主要目标是ease of use, rapid development, and security
    2. 更多关于安全的信息herehere
    3. 如果您所说的“易于验证”是指输入/表单验证,它有一个很棒的forms and validation system
    4. 为了方便和可移植的数据库通信,它有一个database abstraction layer,可与 SQLite、PostgreSQL、MySQL、Oracle、MSSQL、FireBird、DB2、Informix、Ingres 和 Google App Engine(即 BigTable)以及部分支持 CouchDB。

    设置和试用非常容易——只需download,解压缩并运行它。它不需要安装或配置,没有依赖项(二进制发行版甚至包括它自己的 Python 解释器),并且包括一个支持 SSL 的 Web 服务器、一个关系数据库、一个脚手架应用程序和一个基于 Web 的 IDE/管理界面错误记录和票务系统。它是一个集成良好的全栈框架,具有许多功能,包括缓存、会话管理、国际化、身份验证和基于角色的访问控制、Web 服务、Ajax 等。

    我对 Spring MVC 不太熟悉,但我认为您会发现 web2py 不那么冗长。比如看this Spring MVC tutorial——下面是web2py中的等价代码(其实就是web2py代码增加了字段验证,一个JS datepicker,一个图片上传):

    from gluon.tools import Crud
    db=DAL('sqlite://storage.sqlite')
    crud=Crud(globals(), db)
    
    db.define_table('person',
        Field('name', required=true'),
        Field('birthdate', 'datetime'),
        Field('address', 'text'),
        Field('image', 'upload'))
    
    def index():
         db.person.id.represent=lambda id: A('view', _href=URL('show', args=id))
         return dict(people=db(db.person).select(),
                     new=A('new contact', _href=URL('edit')))
    def edit():
         row=db.person(request.args(0))
         return dict(form=crud.update(db.person, row, next='show/[id]')
    
    def show():
         row=db.person(request.args(0)) or redirect(URL('index'))
         return dict(form=crud.read(db.person, row),
                     link=A('edit', _href=URL('edit', args=row.id)))
    

    【讨论】:

    • 我愿意试一试,希望不会太难。
    • 我认为 web2py 非常简单。您会发现book 非常有帮助,如果您有任何问题,mailing list 非常友好且响应迅速。
    【解决方案2】:

    Grails。它符合您的经验,并称自己是一个快速开发框架。它使用您熟悉的技术(Spring、Hibernate)。 Grails 代码是用 groovy 编写的,Java 开发人员应该可以轻松上手。如果遇到麻烦,可以回退到 java。 Grails 有一组丰富的插件来处理非常常见的项目,例如身份验证、排队等。当需要部署您的应用程序时,您需要部署 wars/ears。简而言之,Grails 符合您的所有标准。

    1) Grails 减少了配置——它是由“约定优于配置”驱动的,所以如果你遵循约定,框架就会为你绑定代码。
    2)有很多安全插件,其中一个是基于spring security的。
    3)我不知道你的意思,但如果你的意思是我认为你的意思,你可以对你的模型对象施加约束来验证数据。此外,grails 有一个单元/集成测试机器。
    4) Grails 域对象默认映射到数据库表。 Grails 在幕后使用休眠。您可以在域类中自定义您的 db 架构——如果您熟悉 hibernate,您会做得很好。

    因此,基本上,您可以在一个框架中获得经过验证的 Java 技术的所有好处,让您可以轻松加快速度。

    【讨论】:

    • 谢谢,其实我有一些Grails的经验,我尝试使用grails实现一个网站,但说实话,我并没有爱上grails,几个月后我放弃了。而且我认为 grails 社区并没有那么活跃,groovy 也没有。我就是这么想的。
    【解决方案3】:

    如果您从事 Web 开发,那么您很可能会了解 JavaScript。因此,如果您对新框架持开放态度,您可以查看Node Express。它的简单性是难以超越的:

    var app = express.createServer();
    
    app.get('/', function (req, res) {
        res.send('Hello World');
    });
    
    app.listen(3000);
    

    ...您在端口 3000 上有一个 Web 服务器,向访问者说“Hello World”。

    Express 是 Node.js 的 Web 开发框架。您使用 JavaScript 编写代码,不需要任何像 Apache 之类的 Web 服务器或任何东西 - Node 一个 Web 服务器。

    【讨论】:

    • 哦,听起来很有趣。但恐怕Node Express搭建的网站能上线,面向现实世界。
    【解决方案4】:

    如果您同时喜欢语言学习体验,您可以试试 Scala Lift。 Scala 是一种可在 Java JVM 上运行的可扩展语言。 Lift 是一个非常容易编写代码的框架,它为您提供了很多功能,而且花费很少。

    如果有时间,值得一看。

    【讨论】:

    • 我曾经尝试学习Scala。因为成千上万的人说scala将取代java。但这对我来说听起来很困难。而且我找不到好的 IDE。
    【解决方案5】:

    同样参考 python,flask 是模块化的,你可以从基础开始并根据需要添加扩展。 http://flask.pocoo.org/

    希望这会有所帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-13
      • 1970-01-01
      • 2013-04-26
      • 1970-01-01
      • 2011-03-31
      • 2010-12-14
      • 2011-01-30
      • 1970-01-01
      相关资源
      最近更新 更多