现在有很多Web应用程序框架可供使用,几乎每种语言都可用.根据您的经验,他们的优势,劣势和独特功能是什么?假设选择奢侈品,哪些因素会导致您考虑另一个?
我最感兴趣的是人们对一个或多个框架的直接体验,而不是对所有内容进行详尽的比较.希望SO社区拥有程序员,他们在Rails,ASP.NET,Django,TurboGears或JSF等方面有着不错的经历.如果有人使用像Seaside或Weblocks这样不那么主流的框架,那也很棒.
编程语言是一个明显的区别,但Java和Ruby的火焰战不会太有趣,而且大多数这些框架似乎至少与他们选择的语言一样投资于技术,工具和复杂性; 所以我对以下事情更感兴趣:
发展速度和便利性
进入壁垒 - 无论是在开发人员培训方面还是在所需的基础设施方面
锁定 - 如果必须切换框架,可以保留多少代码?
灵活性 - 框架是否决定了您的架构或设计?(无论这是好事还是坏事,最好留待单独讨论.)
性能,可伸缩性和稳定性 - 显然取决于开发人员!
Sean.. 10
我将简要介绍三个流行的Python框架的每个区域.这仅基于我的个人经历和观察.
对于TurboGears,Pylons和Django,开发速度大致相等.作为现代框架,很容易在新网站上开始并开始拼凑页面.Python的开发和调试速度非常快,我认为任何Python框架的开发时间都比我使用的任何其他设置(包括PHP,Perl,Embedded Perl和C#/ ASP.Net)都要短.
如果您了解Python并且愿意观看20分钟的视频教程,那么您可以从头开始创建一个相当完整的wiki类型的站点.或者,您可以在30分钟内完成社交书签网站教程(包括安装).这些是TurboGears示例,但其他两个框架也有几乎相同的教程.
开箱即用的测试/开发基础架构通常足以完成大多数站点.在任何时候,您都可以更换组件以满足您的生产环境要求.例如,SQLite适用于设置模型和加载测试数据,但您需要在上线或存储大量数据之前安装MySQL(例如).
在所有情况下,要求都非常低,完全取决于您的可扩展性要求,而不是框架的任何特性.如果您对某种模板语言或ORM感到满意,它可能会插入.
这是所有框架的一个普遍问题.选择语言时,会限制代码重用选项.当你选择一个模板时,你会再次被锁定(虽然这通常比其他东西更容易改变).您的ORM,数据库等也是如此.这些框架没有什么特别可以帮助或阻碍锁定.
这就是MVC与这三个框架的关系.正如你所说,这是一个非常不同的讨论!
好吧,如果你写好代码,你的网站将表现良好!同样,这是由不同开发技术解决的所有框架中的问题,并且可能超出了本答案的范围.
我将简要介绍三个流行的Python框架的每个区域.这仅基于我的个人经历和观察.
对于TurboGears,Pylons和Django,开发速度大致相等.作为现代框架,很容易在新网站上开始并开始拼凑页面.Python的开发和调试速度非常快,我认为任何Python框架的开发时间都比我使用的任何其他设置(包括PHP,Perl,Embedded Perl和C#/ ASP.Net)都要短.
如果您了解Python并且愿意观看20分钟的视频教程,那么您可以从头开始创建一个相当完整的wiki类型的站点.或者,您可以在30分钟内完成社交书签网站教程(包括安装).这些是TurboGears示例,但其他两个框架也有几乎相同的教程.
开箱即用的测试/开发基础架构通常足以完成大多数站点.在任何时候,您都可以更换组件以满足您的生产环境要求.例如,SQLite适用于设置模型和加载测试数据,但您需要在上线或存储大量数据之前安装MySQL(例如).
在所有情况下,要求都非常低,完全取决于您的可扩展性要求,而不是框架的任何特性.如果您对某种模板语言或ORM感到满意,它可能会插入.
这是所有框架的一个普遍问题.选择语言时,会限制代码重用选项.当你选择一个模板时,你会再次被锁定(虽然这通常比其他东西更容易改变).您的ORM,数据库等也是如此.这些框架没有什么特别可以帮助或阻碍锁定.
这就是MVC与这三个框架的关系.正如你所说,这是一个非常不同的讨论!
好吧,如果你写好代码,你的网站将表现良好!同样,这是由不同开发技术解决的所有框架中的问题,并且可能超出了本答案的范围.
Django vs Struts.
发展速度和便利性.
Django - 在构建模型所需的时间内运行(在Python中),定义Admin映射(每个模型类2-3行代码)并创建HTML模板以使用默认的主 - 详细视图.
Struts - 必须在SQL中定义数据库,然后在iBatis中定义ORM映射.然后使用操作类和JSP模板页面定义,测试和构建各种应用程序组件.哦,我需要定义EJB来将数据从应用程序移动到JSP.这一切都需要编译,我必须通过许多细节来获得符合编译规则的东西.
进入壁垒 - 无论是在开发人员培训方面还是在所需的基础设施方面
所有框架和语言都保持不变.这几乎是一个不关心的项目.没有语言或框架本身很容易训练.所有Web框架都具有类似的基础结构要求.
锁定 - 如果必须切换框架,可以保留多少代码?
这没有多大意义.如果从Tomcat切换到任何Tomcat衍生产品,则可以保留大量Java代码.否则,在切换框架时通常不会保留太多代码.
灵活性 - 框架是否决定了您的架构或设计?(无论这是好事还是坏事,最好留待单独讨论.)
实际上,这不是一个单独的讨论.这才是重点.框架决定了你的架构 - 这是一件好事.实际上,框架是您不必编写,测试,调试或支持的代码.您的应用程序受框架限制为经过验证的可行结构,这是一件好事.
性能,可伸缩性和稳定性 - 显然取决于开发人员!
性能是语言(不是框架).这是设计.在某种程度上,它也是实现配置.
可伸缩性是框架(而不是语言).它的设计和配置.
稳定性是全面的:操作系统,语言,框架,设计,编程,QA和实现配置.