流行的 Web 框架之间的主要区别是什么?
-
02-07-2019 - |
题
有 许多 Web 应用程序框架 如今,几乎适用于所有语言。根据您的经验,他们的优点、缺点和独特之处是什么?假设有多种选择,哪些因素会让您优先考虑其中一个?
我最感兴趣的是人们对一个或多个框架的直接体验,而不是对现有所有框架的详尽比较。希望 SO 社区中的程序员在诸如此类的事情上有好的和坏的经历 导轨, 网络平台, 姜戈, 涡轮齿轮, , 或者 日本科学基金会. 。如果有人正在使用不太主流的框架之一,例如 海滨 或者 微块.
编程语言是一个明显的区别,但 Java 与 Ruby 的激烈战争不会太有趣,而且大多数框架似乎至少与他们选择的语言一样,在技术、工具和复杂性上进行了投资;所以我对以下事情更感兴趣:
- 开发速度快、方便
- 进入壁垒 - 无论是在开发人员培训方面还是在所需基础设施方面
- 锁定 - 如果必须切换框架,您可以保留多少代码?
- 灵活性 - 框架是否决定了您的架构或设计?(这到底是好事还是坏事,最好留待单独讨论。)
- 性能、可扩展性和稳定性——显然取决于开发人员!
解决方案
我将简要介绍三个流行的 Python 框架的每个领域。这仅基于我的个人经历和观察。
开发速度快、方便
为了 涡轮齿轮, 塔架, , 和 姜戈, ,发展速度大致相当。作为现代框架,很容易开始新站点并开始组合页面。Python 的开发和调试速度非常快,我认为任何 Python 框架的开发时间都比我使用过的任何其他设置(包括 PHP、Perl、Embedded Perl 和 C#/ASP.Net)都要短。
进入壁垒 - 开发人员培训和基础设施
如果您了解 Python 并且愿意观看 20分钟视频教程, ,您可以从头开始创建一个相当完整的wiki类型站点。或者您可以步行通过 社交书签网站教程 30分钟内(包括安装)。这些是 TurboGears 示例,但其他两个框架也有几乎相同的教程。
这些框架开箱即用的测试/开发基础设施通常足以完成大多数站点。您可以随时更换组件以满足您的生产环境要求。例如,SQLite 非常适合设置模型和加载测试数据,但您需要在上线或存储大量数据之前安装 MySQL(例如)。
在所有情况下,要求都非常低,并且完全由您的可扩展性要求决定,而不是框架的任何特殊性。如果您熟悉某种模板语言或 ORM,它可能会直接插入。
锁定
这是所有框架的普遍问题。当您选择一种语言时,您就限制了代码重用选项。当您选择模板器时,您将再次被锁定(尽管一般来说,这比其他事情更容易更改)。ORM、数据库等也是如此。这些框架没有做任何具体的事情来帮助或阻碍锁定。
灵活性
这都是关于 MVC 和这三个框架的。正如你所说,这是一个非常不同的讨论!
性能、可扩展性和稳定性
好吧,如果您编写良好的代码,您的网站就会表现良好!同样,这是一个跨所有框架解决的问题 不同的开发技术 并且可能远远超出了这个答案的范围。
其他提示
Django 与 Struts。
开发速度快、方便。
Django - 在构建模型(在 Python 中)、定义管理映射(每个模型类 2-3 行代码)和创建 HTML 模板以使用默认的主从视图所需的时间内启动并运行。
Struts - 必须在 SQL 中定义数据库,然后在 iBatis 中定义 ORM 映射。然后使用操作类和 JSP 模板页面定义、测试和构建各种应用程序组件。哦,我需要定义 EJB 将数据从应用程序移动到 JSP。这一切都必须编译,我必须处理大量细节才能得到符合编译规则的东西。
进入壁垒 - 在开发人员培训和所需基础设施方面
在所有框架和语言中都是恒定的。这几乎是一个不关心的项目。没有一种语言或框架本质上是容易训练的。所有 Web 框架都有类似的基础设施要求。
锁定 - 如果必须切换框架,您可以保留多少代码?
这没有多大意义。如果您从 Tomcat 切换到任何 Tomcat 衍生版本,则可以保留大量 Java 代码。否则,当您切换框架时通常不会保留太多代码。
灵活性 - 框架是否决定了您的架构或设计?(这到底是好事还是坏事,最好留待单独讨论。)
事实上,这不是一个单独的讨论。这才是重点。框架决定了你的架构——这是一件好事。事实上,框架是您不必编写、测试、调试或支持的代码。您的应用程序被框架限制为经过验证的、可行的结构,这是一件好事。
性能、可扩展性和稳定性 - 显然取决于开发商!
性能是语言(而不是框架)。这是设计。在某种程度上,它也是实现配置。
可扩展性是框架(而不是语言)。这是设计和配置。
稳定性是全面的:操作系统、语言、框架、设计、编程、QA 和实施配置。
这是一个非常主观的问题..这是您应该添加到您的问题中的标签。正如一些评论已经建议的那样,您已经指定了一个非常好的指南;你到底在问什么?关于这种事情有十亿种意见,但绝对没有正确答案!
就我个人而言,我开始使用 .html,转向 php,尝试了 ruby(讨厌它),发现了 Python / DJango..从此以后一直很幸福。这是一条非常独特的道路(可能),所以你的里程可能会有所不同:)