Python中是否有生产就绪的Web应用程序框架?

时间:2010-04-15 07:07:05

标签: python web-applications

我听到很多关于Python语言的好评。他们说它成熟,富有表现力......我正在寻找Python中的生产就绪企业应用程序框架。通过“生产就绪”我的意思是:

  • 支持使用缓存和声明性解释的客观关系映射(如JPA,Hibernate等)。
  • 控制面向用户界面支持 - 没有HTML模板,但像JSF(RichFaces,Icefaces)或GWT,Vaadin,ZK
  • 组件分解和依赖注入(如EJB或Spring)
  • 单元和集成测试
  • 良好的IDE支持
  • 集群,模块化等(如Terracota,OSGi等)。
  • IBM,Oracle等公司编写的成功应用程序(我的意思是真正的商业应用程序而不是Twitter)
  • 可以提供商业支持

Python世界有可能吗?或者只有选择:

  • 使用Python并从底部写下所有内容(太费时)
  • 坚持使用Java EE
  • 购买.NET堆栈

6 个答案:

答案 0 :(得分:26)

Django似乎是明显的选择。它是迄今为止several large corporations使用的最稳定和最先进的框架。

因为它是一个Python框架,它通常可以使用任何Python模块,以及为Django制作的许多模块。

它应该满足您的所有需求,并且学习/部署并不是非常困难。

答案 1 :(得分:14)

对于上下文,我在瑞士的一家大型私人银行工作,在J2EE堆栈上编写企业应用程序。

Python中有很多“Production Ready”Web框架。并且有很多基于Python的大型网站。

那就是说,我认为Python对于一个企业应用来说是一个糟糕的选择。它可以用作粘合语言或脚本语言(我们的部署脚本是Python)。对我来说showstopper是向后兼容性(Python 3.x不向后兼容Python 2.x)。 Python哲学似乎更多的是创新并使语言更好,更顺畅,并且不一定支持10年前编写的程序。

在Web框架方面,我喜欢Django,但它确实太年轻了,它的发展太快,无法在企业中使用。我对其他基于Python的框架没有太多经验。

如果您需要面向企业的框架,则必须使用企业堆栈(Java / .Net)。

另一方面,即使在Java世界中,也存在使用不那么有事业性的框架的倾向。认为Spring vs EJB2或EJB3的重量比EJB2轻得多。或者认为Flex(在我看来远非企业框架)在企业中越来越多地被使用。因此,如果您的企业开放得足够,准备好进入未来,使用Django,RoR或其他现代Web 2.0,社区驱动,开源,下一代,基于活动记录的框架......可能不会那么多。 ..

最后,直接回答几点:

  • 支持ORM /缓存/ ...:是的,但是大多数解决方案都基于活动记录,这对于您可能想要做的事情的90%是好的,但绝对不像JPA / Hibernate那样完整/复杂
  • 面向控制的UI:不,你不会找到标准,所以你不会找到第三方组件。您可能获得的最接近的是与jQuery或其他JS UI框架的集成
  • 依赖注入:Spring有一个Spring到Python的端口,由SpringSource维护。但是DI并不是Python哲学。使用函数,默认参数和闭包将解决同样的问题。我们可能会争辩说Pythonic解决方案比Java方式更清晰......
  • 单元/集成测试:非常好的支持,多个测试框架。尽管如此,支持还不如Java,我们有大量的测试工具。
  • 良好的IDE支持:对动态语言提供的大量支持存在技术限制,但至少Eclipse和Netbeans都支持Python。
  • 群集/模块化:群集将通过“无共享基础架构”和/或分布式缓存来解决。据我所知,没有模块化解决方案(在OSGI意义上)。但我会经常挑战OSGI是解决我们在企业中没有的问题的解决方案......

答案 2 :(得分:5)

查看Zope ...

答案 3 :(得分:4)

如上所述,django可能是最稳定的python Web应用程序框架。要依次回答你的观点:

  • 支持使用缓存和声明性解释的客观关系映射(如JPA,Hibernate等)。是的,请参阅django models
  • 控制面向用户界面支持 - 没有HTML模板,但是像JSF(RichFaces,Icefaces)或GWT,Vaadin,ZK。没有django模板,但你可以很容易地添加一些其他视图层。
  • 组件分解和依赖注入(如EJB或Spring)。不确定,因为我没有使用过EJB。
  • 单元和集成测试。是的,请参阅django testing
  • 良好的IDE支持。非常好。见eclipse + pydev
  • 集群,模块化等(如Terracota,OSGi等)。不知道。
  • IBM,Oracle等公司在其中编写了成功的应用程序(我的意思是真正的商业应用程序,而不是Twitter)。主要是洛杉矶时报和华盛顿邮报等新闻机构。
  • 可以获得商业支持。有一些like this

答案 4 :(得分:1)

你看过Jython吗? Jython是Java虚拟机的Python实现。可以在Jython上运行Django: Django on Jython并将Jython和Django与Java EE应用程序服务器一起使用:Django on Glassfish

如果你还没有明确选择Python,你可以看一下使用Wicket或Grails作为Web应用程序框架的Groovy。

答案 5 :(得分:1)

Plone怎么样?访问http://www.plone.org了解更多信息。用于许多企业级应用程序。

有些组织使用Plone:

中央情报局,联邦调查局,美国国家航空航天局,乐施会,巴西联邦政府,Novell,名单还在继续。

有关已部署的解决方案和案例研究的信息,请访问www.plone.net