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

时间:2011-08-04 01:05:42

标签: php python django web-frameworks web2py

我正在为即将开展的项目决定一个Web框架,我很感激任何建议。我们决定将jQuery用于JavaScript,并且非常倾向于Python或PHP(更多Python)用于我们的服务器端逻辑。由于它的jQuery集成,我对web2py特别感兴趣。

关于我们的项目

  • 我们的项目是为综合体开发安全控制台 在组织内部运作的网络安全系统 网络
  • 此控制台主要由服务器驱动,因为消息来自网络,必须由服务器推送给用户。
  • 用户还可以启动安全操作,其实现可能在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的统治地位(再一次)很难被忽视。

非常感谢你的时间!

5 个答案:

答案 0 :(得分:2)

在决定框架之前,您应首先决定是否要使用您不熟悉的语言。

你说你们都拥有最少的PHP经验,所以你必须权衡这里的优势;进入PHP(如果有的话)的专业人士是否会权衡开发人员需要花费多少时间进行再培训? (虽然根据您的背景经验,PHP应该很容易上手。)

如果你像那样构建它,PHP必须有一个非常有说服力的产品给你。从我所看到的,特别是Django vs web2py来看,它们在功能上看起来非常接近 - 这很好,但是没有提供“你必须使用x!”您可能会追随的情景。

但是,如果你以后会带来更多的人,并且觉得找到使用web2py的人会很困难,那么可能会把它提交给PHP。你说你的自己,Django的受欢迎程度(和BSD许可证)很难忽视,它应该让人们更容易找到以后扩展。

如果是我,在你的鞋子里,我会选择web2py。假设在可预见的未来,开发团队将继续专注于Python。

答案 1 :(得分:1)

Python vs PHP:Python

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

Web2py还允许您轻松编写Web服务,以便更轻松地将C部分与网站基础结构集成。

如果您已经更喜欢python,我会选择它。如果您需要以后接受过PHP培训的Web开发人员,请教他们Python。这不会花很长时间,我相信从长远来看他们会很感激。另外,从PHP MVC框架迁移到web2py甚至django会使事情变得更容易。我已经使用CodeIgniter for PHP,发现web2py非常简单易懂。

同样对于目录结构,django实际上并不是真正的MVC - 它是MTV(模型,模板,视图)。

我发现web2py的组织更加直截了当。但是,是的,无论哪种方式起初看起来都很奇怪。我会说是的,你应该咬紧牙关并使用MVC。

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

最后,我不会因为jQuery集成而倾向于支持web2py。它确实使用它,并且一些内置的框架内容(如response.flash / session.flash,从另一个控制器加载页面或数据的LOAD函数)依赖于jQuery,但在另一个框架中使用它只意味着你必须写一个包含声明(例如)。

但是,它允许/迫使你专注于开发的方式是我的蛋糕。

答案 2 :(得分:0)

我已经将Django作为我工作的一部分使用了几年,并且当我能够使它工作时真正享受它。不幸的是,也许只是我,但我每次开始使用新服务器时都会花费数小时处理配置,或者尝试在开发IDE中使用它。

启动新项目并开始编码相对简单。但是,如果你偏离了常态,那么就会有各种各样的小问题阻碍工作。例如,如果您希望您的django项目从example.com/django这样的子目录中提供服务。信息是为了使它工作。但很难找到。

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

答案 3 :(得分:0)

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

Django不会帮助你。你应该调查Flask,Flask也有内置控制台。http://werkzeug.pocoo.org/,你可能需要使用twistedgeventFlask jquery

答案 4 :(得分:0)

我建议在mailing list上询问web2py - 你会得到很多帮助和建议。关于LGPL许可证,请注意它仅适用于框架,而不适用于您的应用程序 - 您可以license your application however you like,包括封闭源/商业广告。

听起来你需要一些服务器推送功能,但如果你真的只需要一些长寿命的连接,你可能不需要打扰像Twisted或gevent这样的解决方案。但是,如果有必要,web2py确实包含this(需要Tornado,并使用WebSockets工作,但可以是adapted to use other methods)。