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

时间:2008-09-26 23:21:18

标签: web-applications frameworks comparison

这些天有lots of web application frameworks可用,几乎所有语言都可用。根据您的经验,他们的优势,劣势和独特功能是什么?假设选择的奢侈品,哪些因素会导致你考虑​​一个而不是另一个?

我最感兴趣的是人们对一个或多个框架的直接体验,而不是对所有内容进行详尽的比较。希望SO社区的程序员能够通过RailsASP.NETDjangoTurboGearsJSF等方式获得良好和不良的体验。如果有人使用SeasideWeblocks之类的不太主流的框架,也会很高兴。

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

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

3 个答案:

答案 0 :(得分:10)

我将简要介绍三个流行的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解决的所有框架中的一个问题,可能超出了这个答案的范围。

答案 1 :(得分:5)

Django vs Struts。

开发速度和便利性。

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

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

进入障碍 - 无论是在开发人员培训方面还是在所需的基础架构方面

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

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

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

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

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

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

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

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

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

答案 2 :(得分:1)

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

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