问题 流行的Web框架之间的主要区别是什么?


许多Web应用程序框架 现在可用,几乎每种语言。根据您的经验,他们的优势,劣势和独特功能是什么?假设选择的奢侈品,哪些因素会导致您考虑一个而不是另一个?

我最感兴趣的是人们对一个或多个框架的直接体验,而不是对所有内容进行详尽的比较。希望SO社区的程序员能够在诸如此类的事情上获得好的和坏的经验 轨道ASP.NETDjango的的TurboGears, 要么 JSF。如果有人正在使用其中一个不那么主流的框架,那也很棒 海滨 要么 Weblocks

编程语言是一个明显的区别,但Java和Ruby的火焰战并不会很有趣,而且大多数这些框架似乎至少与他们选择的语言一样投资于技术,工具和复杂性;所以我对以下事情更感兴趣:

  • 发展速度和便利性
  • 进入壁垒 - 无论是在开发人员培训方面还是在所需的基础设施方面
  • 锁定 - 如果必须切换框架,可以保留多少代码?
  • 灵活性 - 框架是否决定了您的架构或设计? (无论这是好事还是坏事,最好留待单独讨论。)
  • 性能,可伸缩性和稳定性 - 显然取决于开发人员!

8610
2017-09-27 01:02


起源

我相信有太多了。你有没有特定的列表,或者至少有一个堆栈(LAMP,Java,Windows)可供选择? - Jon Limjap
好吧,即便如此,你还有一大堆积分,不好或好点。 - edomaur
您列出了五个要点,并与97个框架的比较相关联。如果每个框架 - 类别对都在一个单独的帖子中处理,那将近五百个帖子。如果有多个人插入......你应该考虑缩小范围。 - Shog9♦
好点子。该表的巨大(及其“功能清单”样式)是发布问题的一个原因!我当然不是在寻找一百种选项的详尽比较,但我宁愿不将范围缩小到像“Rails vs Django”这样的东西。 - Sam Stokes
相关问题: MVC或事件驱动 - 面向组件的Web框架? - Pablo Marambio


答案:


我将简要介绍三个流行的Python框架的每个区域。这仅基于我的个人经历和观察。

发展速度和便利性

对于 的TurboGears主塔,和 Django的,发展速度大致相等。作为现代框架,很容易在新网站上开始并开始拼凑页面。 Python的开发和调试速度非常快,我认为任何Python框架的开发时间都比我使用的任何其他设置(包括PHP,Perl,Embedded Perl和C#/ ASP.Net)都要短。

进入壁垒 - 开发人员培训和基础设施

如果您了解Python并愿意观看 20分钟视频教程,您可以从头开始创建一个相当完整的wiki类型的站点。或者你可以走过一个 社交书签网站教程 在30分钟内(包括安装)。这些是TurboGears示例,但其他两个框架也有几乎相同的教程。

开箱即用的测试/开发基础架构通常足以完成大多数站点。在任何时候,您都可以更换组件以满足您的生产环境要求。例如,SQLite适用于设置模型和加载测试数据,但您需要在上线或存储大量数据之前安装MySQL(例如)。

在所有情况下,要求都非常低,完全取决于您的可扩展性要求,而不是框架的任何特性。如果您对某种模板语言或ORM感到满意,它可能会插入。

锁相

这是所有框架的一个普遍问题。选择语言时,会限制代码重用选项。当你选择一个模板时,你又被锁定了(尽管通常比其他东西更容易改变)。您的ORM,数据库等也是如此。这些框架没有什么特别可以帮助或阻碍锁定。

灵活性

这都是关于这三个框架的MVC。正如你所说,这是一个非常不同的讨论!

性能,可伸缩性和稳定性

好吧,如果您编写好的代码,您的网站将表现良好!同样,这是所有框架的问题 不同的开发技术 并且可能超出了这个答案的范围。


9
2017-09-27 01:46





Django vs Struts。

发展速度和便利性。

Django - 在构建模型所需的时间内运行(在Python中),定义Admin映射(每个模型类2-3行代码)并创建HTML模板以使用默认的主 - 详细视图。

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

进入障碍  - 无论是开发人员培训还是所需的基础设施

所有框架和语言都保持不变。这几乎是一个不关心的项目。没有语言或框架本身很容易训练。所有Web框架都具有类似的基础结构要求。

锁相  - 如果你不得不切换框架,你可以保留多少代码?

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

灵活性  - 框架是否决定了您的架构或设计? (无论这是好事还是坏事,最好留待单独讨论。)

实际上,这不是一个单独的讨论。这才是重点。框架决定了你的架构 - 这是一件好事。实际上,框架是您不必编写,测试,调试或支持的代码。您的应用程序受框架限制为经过验证的可行结构,这是一件好事。

性能,可伸缩性和稳定性  - 显然取决于开发人员!

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

可伸缩性是框架(而不是语言)。它的设计和配置。

稳定性是全面的:操作系统,语言,框架,设计,编程,QA和实现配置。


4
2017-09-27 00:13





这是一个令人难以置信的主观问题..这是你应该添加到你的问题的标签。正如一些评论已经提出的那样,你已经指定了一个很好的指南;你究竟在问什么?关于这类事情有十亿次意见,绝对没有正确答案!

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


0