各种Python/PHP web框架(特别是我的项目)的相对优势是什么?


What are the relative advantages of various Python/PHP web frameworks (particularly for my project)?

我正在为一个即将到来的项目决定一个web框架,我将感谢任何建议。我们决定在JavaScript上使用jQuery,在服务器端逻辑上更倾向于使用Python或PHP(更多的是Python)。我对web2py特别感兴趣,因为它集成了jQuery。

项目简介

  • 我们的项目是开发一个复杂的安全控制台在组织内部运行的网络安全系统网络。
  • 这个控制台将主要由服务器驱动,因为消息来自网络,必须由服务器推送给用户。
  • 用户还可以启动安全操作,其实现可能在c++中。
  • 我们计划的界面会比较丰富,我想尽可能多地利用jQuery的功能。
  • 我们可以控制运行的浏览器环境(例如,我们不必担心禁用JavaScript的客户端)。
  • 我们的站点可能只有几个长期的客户端连接。
  • 我们正在寻找具有许可许可的软件组件,尽管我们正在使用一些copyleft组件(我看到web2py是LGPL而Django是BSD,所以+1到Django)
  • 我们有大约一个月的时间来创建我们系统的功能演示,这个界面是其中的一个小(但可见)的部分。
对我们的

我们是两个有5年编程经验的开发人员,但很少有web开发经验。我有几年的Python经验和一个暑假的PHP经验。我的同事有一些Python经验,但从未接触过PHP。我在2008年使用过一次Django,但对它的文件和代码结构感到沮丧,我发现它非常不直观。也许这种结构是MVC模型固有的(我在Django和CakePHP中有过类似的经历),我只需要咬紧牙关记住它。

我的问题

根据上面的信息,对于我们的项目,各种Python/PHP web框架的相对优势是什么?如上所述,我对web2py特别感兴趣,因为它集成了jQuery,尽管Django的主导地位(再一次)很难忽视。

非常感谢您的时间!

在决定一个框架之前,您应该首先决定是否要提交一门您不熟悉的语言。

你说你俩都只有很少的PHP经验,所以你必须权衡一下这里的优势;使用PHP的优点(如果有的话)会超过开发人员需要花在再培训上的时间吗?(尽管根据你的背景经验,PHP应该很容易上手。)

如果你像那样构建它,PHP将不得不提供一个非常令人信服的产品给你。从我所看到的来看,特别是Django和web2py,它们在功能上似乎都非常接近——这很好,但是没有提供你可能想要的"你必须使用x!"的场景。

然而,如果你以后要带更多的人来,并且觉得找个人来使用web2py会很困难,那么你可能会把它推荐给PHP。你自己也说过,Django的受欢迎程度(以及BSD许可证)是很难忽视的,这应该会让它更容易找到人来进行后续的扩展。

如果是我,站在你的立场上,我会选web2py。假设开发团队在可预见的未来将继续关注Python

Python vs PHP: Python

使用python,您总是可以为C代码编写包装器,这样您就不必启动其他进程并向它们传递参数。这可能对你的安全功能有用。

Web2py将允许您轻松地为此编写web服务,以便更轻松地将C部分与网站基础设施集成。

如果你已经喜欢python了,我会选择python。如果你以后需要引进受过PHP培训的web开发人员,教他们Python。这不会花很长时间,我相信从长远来看他们会感激的。另外,从PHP MVC框架转移到web2py甚至django会使事情变得更容易。我曾使用CodeIgniter开发PHP,发现web2py非常简单且易于理解。

至于目录结构,django实际上不是真正的MVC——它是MTV(模型、模板、视图)。

我发现web2py的组织更直接一些。但是,不管怎样,一开始看起来都很奇怪。我会说是的,你应该咬紧牙关使用MVC。

在web2py中,"视图"是具有编写原始python代码能力的html标记。控制器从模型(数据库)中提取数据,附加任何需要的文件(css/js等),模型当然只是定义数据的结构,并允许您以OO的方式访问它。

最后,我不会仅仅因为集成了jQuery就对web2py表示支持。它确实使用它,以及一些内置框架的东西(如response.flash/session)。flash (LOAD函数从另一个控制器加载页面或数据)依赖于jQuery,但在另一个框架中使用它只意味着你必须写一个包含语句(例如)。

但是,它允许/迫使你专注于开发的方式对我来说是最重要的。

我已经使用Django作为我工作的一部分好几年了,当我能让它工作时,我真的很享受它。不幸的是,也许只有我一个人,每次我启动一个新服务器,或者试图让它在开发IDE中工作时,我都要花几个小时的时间在配置上。

启动一个新项目并开始编码是相对简单的。但如果你偏离常规,就会有各种各样的小陷阱让事情无法正常进行。比如,如果你想让django项目从example.com/django这样的子目录中提供服务。信息就在那里,让它发挥作用。但是很难找到。

我不能告诉你web2py是否有同样的问题。我是从你的问题中了解到的。不过,它看起来确实很光滑,也很简单。我可以告诉你,在让应用程序从我使用的任何服务器配置中正常服务的麻烦之后,django比普通php更有趣。PHP框架可能有所不同。

从我的理解项目不常见的web应用程序,你必须需要事件驱动程序,web服务器在python。

Django在这里帮不了你。你应该看看Flask, Flask也有内置的控制台。http://werkzeug.pocoo.org/,你可能需要使用twisted, gevent,Flask jquery。

我建议您在web2py的邮件列表中询问—您将在那里获得许多帮助和建议。关于LGPL许可,请注意它只适用于框架,而不是您的应用程序——您可以随意许可您的应用程序,包括闭源/商业。

听起来你需要一些服务器推送功能,但如果你一次只需要几个长时间的连接,你可能不需要像Twisted或gevent这样的解决方案。如果有必要的话,web2py会包含这个(需要Tornado,使用WebSockets工作,但也可以使用其他方法)。