流行的Web框架有哪些主要区别?

12
这些天有大量的Web应用框架可供选择,几乎适用于所有编程语言。在您的经验中,它们的优点、缺点和独特功能是什么?假设有多种选择,哪些因素会导致您考虑其中一种而不是另一种?
我最感兴趣的是人们对一个或多个框架的直接体验,而不是对所有框架进行详尽的比较。希望SO社区的程序员们有使用过Rails, ASP.NET, Django, TurboGearsJSF等框架的好和坏经历。如果有人正在使用SeasideWeblocks等较不常见的框架,那就更好了。
编程语言是一个明显的区别,但Java vs Ruby的争论并不会很有趣,而且这些框架似乎至少与它们所选择的语言一样需要投资于技术、工具和复杂性;因此,我更关心的是像以下这些事情:
  • 开发速度和方便性
  • 入门难度 - 包括开发者培训和所需基础设施
  • 锁定 - 如果您必须切换框架,您能保留多少代码?
  • 灵活性 - 框架是否决定了您的架构或设计?(无论这是好事还是坏事,可能最好单独讨论。)
  • 性能、可扩展性和稳定性 - 显然取决于开发人员!

1
我相信有太多选择了。你没有特定的列表或至少一个栈(LAMP,Java,Windows)可供选择吗? - Jon Limjap
即使如此,您仍然有一个包含好的或坏的点的长列表。 - edomaur
你列出了五个要点,并链接到了97个框架的比较。如果每个框架-类别对都在单独的帖子中处理,那将近需要五百篇帖子。如果有多个人参与讨论...你真的应该考虑缩小范围。 - Shog9
不错的观点。那个表格(以及它的“特性清单”样式)的巨大是发布这个问题的一个原因!我当然不是在寻找一百种选项的详尽比较,但我也不想将范围缩小到像“Rails vs Django”这样的东西。 - Sam Stokes
相关问题: MVC 或事件驱动的组件化 Web 框架? - Pablo Marambio
3个回答

9
我将简要介绍三个流行的 Python 框架的每个领域。这仅基于我的个人经验和观察。
开发速度和便利性
对于 TurboGears、Pylons 和 Django,开发速度大致相同。作为现代框架,很容易开始一个新站点并开始组合页面。Python 以快速开发和调试而闻名,我会认为任何 Python 框架都比我使用过的其他设置(包括 PHP、Perl、嵌入式 Perl 和 C#/ASP.Net)具有更短的开发时间。
进入门槛 - 开发人员培训和基础设施
如果您了解 Python 并愿意观看 20分钟视频教程,则可以从头开始创建一个相当完整的 wiki 类型站点。或者您可以在 30 分钟内(包括安装)通过 社交书签站点教程。这些是 TurboGears 示例,但另外两个框架也有几乎相同的教程。
这些框架提供的测试/开发基础设施通常足以完成大多数站点。在任何时候,您都可以交换组件以满足您的生产环境要求。例如,SQLite 对于设置模型和加载测试数据是可以的,但在上线或存储大量数据之前,您将需要安装 MySQL(例如)。
在所有情况下,要求非常低,完全由您的可扩展性要求而不是框架的任何特殊性所决定。如果您熟悉某种模板语言或ORM,则它可能会很容易地插入其中。
锁定
这是所有框架都面临的一般问题。当您选择一种语言时,您限制了代码重用选项。当您选择一个模板引擎时,您再次被锁定(尽管通常比其他事情更容易更改)。同样适用于ORM、数据库等。这些框架没有任何特别的东西可以帮助或阻碍锁定。
灵活性
这三个框架都是关于MVC的。正如你所说,这是一个非常不同的讨论!
性能、可扩展性和稳定性
好的编码会使您的网站表现良好!同样,这是所有框架都面临的问题,通过不同的开发技术来解决,可能远远超出了本答案的范围。

5

Django vs Struts.

开发速度和便利性。

Django - 只需在Python中构建模型,定义管理映射(每个模型类2-3行代码)并创建HTML模板以使用默认的主细节视图即可上手运行。

Struts - 需要在SQL中定义数据库,然后在iBatis中定义ORM映射。然后定义、测试和构建各种应用程序组件,使用操作类和JSP模板页面。哦,我需要定义EJB将数据从应用程序移动到JSP。所有这些都必须编译通过,并且我必须解决许多细节才能得到符合编译规则的内容。

入门难度 - 包括开发人员培训和所需基础设施

所有框架和语言都是如此。这几乎是一个不重要的问题。没有一种语言或框架本质上易于培训。所有Web框架都有类似的基础设施要求。

锁定 - 如果您必须更换框架,您可以保留多少代码?

这没有太多意义。如果您从Tomcat切换到任何Tomcat衍生版,您可以保留大量Java代码。否则,当您切换框架时,通常不会保留太多代码。

灵活性 - 框架是否规定了您的架构或设计?(这是好事还是坏事最好分开讨论。)

实际上,这不是一个单独的讨论。这就是重点。框架规定了您的架构-这是件好事。事实上,框架是您无需编写、测试、调试或支持的代码。很好的一点是,您的应用程序被限制在一个经过验证的可行结构中,这是件好事。

性能、可扩展性和稳定性 - 显然取决于开发人员!

性能属于语言(而非框架)。它是设计。在某种程度上,它也是实现配置。

可扩展性属于框架(而非语言)。它是设计和配置。

稳定性涉及各个方面:操作系统、语言、框架、设计、编程、QA和实现配置。


1

这是一个非常主观的问题...你应该在你的问题中加上一个标签。正如一些评论已经建议的那样,你已经指定了一个相当不错的指南;你实际上正在问什么?关于这种事情有数十亿种不同的观点,绝对没有正确答案!

就我个人而言,我开始使用.html,转向php,尝试了ruby(讨厌它),发现了Python / DJango..从那以后一直很开心。但这是一条非常独特的路径(可能),所以你的效果可能会有所不同 :)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接