流行的 Web 框架之间的主要区别是啥?
Posted
技术标签:
【中文标题】流行的 Web 框架之间的主要区别是啥?【英文标题】:What are the main differences between the popular web frameworks?流行的 Web 框架之间的主要区别是什么? 【发布时间】:2010-09-13 15:16:45 【问题描述】:现在有lots of web application frameworks 可用,几乎适用于所有语言。根据您的经验,它们的优势、劣势和独特之处是什么?假设选择奢侈品,哪些因素会导致您考虑其中一项?
我最感兴趣的是人们对一个或多个框架的直接体验,而不是对所有内容的详尽比较。希望 SO 社区的程序员在 Rails、ASP.NET、Django、TurboGears 或 JSF 等方面有好的和不好的经验。如果有人在使用不太主流的框架之一,例如 Seaside 或 Weblocks,也很高兴。
编程语言是一个明显的区别,但 Java 与 Ruby 的激烈交锋不会很有趣,而且这些框架中的大多数似乎至少在技术、工具和复杂性方面的投资与其选择的语言一样多;所以我对以下内容更感兴趣:
开发速度和便利性 进入障碍 - 无论是在开发人员培训方面,还是在所需基础设施方面 锁定 - 如果必须切换框架,您可以保留多少代码? 灵活性 - 框架是否决定了您的架构或设计? (这可能是好事还是坏事最好单独讨论。) 性能、可扩展性和稳定性 - 显然取决于开发人员!【问题讨论】:
我相信太多了。你没有一个特定的列表,或者至少有一个堆栈(LAMP、Java、Windows)可供选择吗? 好吧,即使那样,你也有一大堆要点,无论好坏。 您列出了五个要点,并链接到了 97 个框架的比较。如果每个框架 - 类别对在一个单独的帖子中处理,那将是近 500 个帖子。如果有多个人加入...您真的应该考虑缩小这里的范围。 好点。该表的巨大(及其“功能清单”样式)是发布问题的原因之一!我当然不是在寻找一百个选项的详尽比较,但我宁愿不要将范围一直缩小到“Rails vs Django”之类的东西。 相关问题:MVC or Event Driven - Component Oriented web frameworks? 【参考方案1】:我将简要介绍三个流行的 Python 框架的每个领域。这只是基于我的个人经验和观察。
开发速度和便利性
对于 TurboGears、Pylons 和 Django,开发速度大致相当。作为现代框架,很容易在新站点上开始并开始将页面放在一起。 Python 以开发和调试速度快而著称,我认为任何 Python 框架的开发时间都比我使用过的任何其他设置(包括 php、Perl、Embedded Perl 和 C#/ASP.Net)都要短。
进入壁垒 - 开发人员培训和基础设施
如果您了解 Python 并愿意观看 20 minute video tutorial,您可以从头开始创建一个相当完整的 wiki 类型的站点。或者您可以在 30 分钟内通过social-bookmarking site tutorial(包括安装)。这些是 TurboGears 示例,但其他两个框架也有几乎相同的教程。
这些框架开箱即用的测试/开发基础架构通常足以完成大多数网站。您可以随时更换组件以满足您的生产环境要求。例如,SQLite 非常适合设置模型和加载测试数据,但您需要在上线或存储大量数据之前安装 mysql(例如)。
在所有情况下,要求都非常低,完全取决于您的可扩展性要求,而不是框架的任何特性。如果您对某种模板语言或 ORM 感到满意,它可能会直接插入。
锁定
这是所有框架的普遍问题。当您选择一种语言时,您会限制您的代码重用选项。当您选择一个模板时,您会再次被锁定(尽管这通常比其他事情更容易更改)。您的 ORM、数据库等也是如此。这些框架没有专门做任何有助于或阻碍锁定的事情。
灵活性
这三个框架都是关于 MVC 的。正如你所说,这是一个非常不同的讨论!
性能、可扩展性和稳定性
好吧,如果您编写好的代码,您的网站就会运行良好!同样,这是different development techniques 解决的所有框架中的一个问题,并且可能超出了此答案的范围。
【讨论】:
【参考方案2】:Django 与 Struts。
开发速度和便利性。
Django - 在构建模型所需的时间内启动并运行(在 Python 中)、定义管理映射(每个模型类 2-3 行代码)并创建 html 模板以使用默认的主从视图。
Struts - 必须在 SQL 中定义数据库,然后在 iBatis 中定义 ORM 映射。然后使用动作类和 JSP 模板页面定义、测试和构建各种应用程序组件。哦,我需要定义 EJB 以将数据从应用程序移动到 JSP。这一切都必须编译,我必须处理许多细节才能得到符合编译规则的东西。
进入障碍 - 无论是在开发人员培训方面,还是在所需基础设施方面
在所有框架和语言中保持不变。这几乎是一个无关紧要的项目。没有一种语言或框架天生就容易训练。所有 Web 框架都有类似的基础架构要求。
锁定 - 如果必须切换框架,您可以保留多少代码?
这没有多大意义。如果您从 Tomcat 切换到任何 Tomcat 衍生产品,您可以保留大量 Java 代码。否则,您在切换框架时通常不会保留太多代码。
灵活性 - 框架是否决定了您的架构或设计? (这究竟是好事还是坏事,最好留给单独讨论。)
实际上,这不是一个单独的讨论。这才是重点。框架决定了你的架构——这是一件好事。实际上,框架是您不必编写、测试、调试或支持的代码。您的应用程序被框架限制在一个经过验证的、可行的结构中是一件好事。
性能、可扩展性和稳定性 - 显然取决于开发人员!
性能是语言(不是框架)。是设计。在某种程度上,它也是实现配置。
可扩展性是框架(不是语言)。这是设计和配置。
稳定性是全面的:操作系统、语言、框架、设计、编程、QA 和实施配置。
【讨论】:
【参考方案3】:这是一个非常主观的问题.. 这是你应该添加到你的问题的标签。正如几个 cmets 已经建议的那样,您已经指定了一个很好的指南;你到底在问什么?关于这种事情有十亿的意见,绝对没有正确的答案!
就个人而言,我开始使用 .html,转向 php,尝试了 ruby(讨厌它),发现了 Python / DJango.. 并且一直很开心。这是一条非常独特的道路(可能),因此您的里程可能会有所不同:)
【讨论】:
以上是关于流行的 Web 框架之间的主要区别是啥?的主要内容,如果未能解决你的问题,请参考以下文章
mvvm框架是啥?它和其他框架(jquery)的区别是啥?哪些场景适合?