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

时间:2020-03-06 14:48:50  来源:igfitidea点击:

如今,有很多Web应用程序框架可供使用,几乎适用于每种语言。根据经验,它们的优点,缺点和独特之处是什么?假设我们选择的是奢侈品,那么哪些因素会使我们考虑一个因素?

我最感兴趣的是人们对一个或者多个框架的直接经验,而不是对那里所有内容的详尽比较。希望SO社区中的程序员在Rails,ASP.NET,Django,TurboGears或者JSF之类的东西上有好有坏的经验。听到有人使用像Seaside或者Weblocks这样的较不主流的框架之一,这也将是很高兴的。

编程语言是一个明显的区别,但是Java与Ruby的争吵不会太有趣,而且这些框架中的大多数似乎至少对技术,工具和复杂性的投资与其所选择的语言一样多。所以我对诸如此类的东西更感兴趣:

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

解决方案

这是一个令人难以置信的主观问题。这是我们应该在问题中添加的标签。正如已经有几条评论所建议的那样,我们已经指定了一个很好的指南。你到底在问什么关于这种事情有十亿意见,而且绝对没有正确的答案!

我个人开始使用.html,移至php,尝试使用ruby(讨厌),发现了Python / DJango ..从那以后一直很高兴。这是一条非常独特的道路(可能),因此里程可能会有所不同:)

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

开发速度和便利性

对于TurboGears,Pylons和Django,开发速度大致相同。作为现代框架,很容易上新网站并开始将页面组合在一起。 Python以开发和调试速度快着称,我认为任何Python框架的开发时间都比我使用过的其他任何设置(包括PHP,Perl,Embedded Perl和C#/ ASP.Net)都要短。

进入壁垒-开发人员培训和基础架构

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

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

在所有情况下,这些要求都非常低,并且完全由可伸缩性要求而非框架的任何特性所决定。如果我们熟悉某种模板语言或者ORM,则可能会直接插入。

锁定

这是所有框架中的普遍问题。选择语言时,将限制代码重用选项。当我们选择模板程序时,我们将再次被锁定(尽管通常,它比其他方法更容易更改)。ORM,数据库等也是如此。这些框架没有专门做任何有助于或者阻碍锁定的事情。

灵活性

这三个框架都与MVC有关。正如我们所说,这是完全不同的讨论!

性能,可伸缩性和稳定性

好吧,如果我们编写良好的代码,则网站将运行良好!同样,这是使用不同开发技术解决的所有框架中的问题,并且可能超出了此答案的范围。

Django与Struts。

开发速度快,方便。

Django会在建立模型(在Python中),定义Admin映射(每个模型类2-3行代码)和创建HTML模板以使用默认主从视图的过程中投入运行。

Struts必须使用SQL定义数据库,然后在iBatis中定义ORM映射。然后使用动作类和JSP模板页面定义,测试和构建各种应用程序组件。哦,我需要定义EJB,以便将数据从应用程序转移到JSP。所有这些都需要编译,而我必须仔细研究大量细节才能获得符合编译规则的内容。

开发人员培训和所需基础设施方面的进入壁垒

在所有框架和语言中保持不变。这几乎是一个无关紧要的项目。没有语言或者框架天生就容易训练。所有Web框架都具有类似的基础结构要求。

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

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

框架的灵活性决定了体系结构或者设计吗? (这是好事还是坏事,最好单独进行讨论。)

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

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

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

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

全面的稳定性:操作系统,语言,框架,设计,编程,质量保证和实施配置。