不同Python/PHP网络框架的相对优缺点是什么?

4 投票
5 回答
1861 浏览
提问于 2025-04-16 22:51

我正在为一个即将到来的项目选择一个网页框架,希望能得到一些建议。我们决定使用jQuery来处理JavaScript,并且在服务器端逻辑上更倾向于使用Python或PHP(更偏向Python)。我特别对web2py感兴趣,因为它与jQuery的结合很好。

关于我们的项目

  • 我们的项目是开发一个安全控制台,用于一个复杂的网络安全系统,这个系统在一个组织的内部网络中运行。
  • 这个控制台主要由服务器驱动,因为信息会从网络中传入,并需要由服务器推送给用户。
  • 用户也可以发起一些安全操作,这部分的实现可能会用到C++。
  • 我们计划的界面会比较丰富,我希望尽可能利用jQuery的强大功能。
  • 我们对运行的浏览器环境有一定的控制(例如,我们不需要担心客户的JavaScript被禁用)。
  • 我们的网站可能只有少数几个长时间保持连接的客户端。
  • 我们在寻找一些许可证比较宽松的软件组件,虽然我们也会使用一些有版权限制的组件(我看到web2py是LGPL,而Django是BSD,所以Django更受欢迎)。
  • 我们大约有一个月的时间来创建一个功能演示,而这个界面只是其中一个小(但显眼)的部分。

关于我们

我们是两名开发者,拥有大约5年的编程经验,但在网页开发方面经验不多。我有几年的Python经验,还有一个夏天的时间在玩PHP。我的同事有一些Python经验,但从未接触过PHP。我在2008年用过一次Django,但对它的文件和代码结构感到很沮丧,觉得非常不直观。也许这种结构是MVC模型的固有特性(我在使用Django和CakePHP时也有类似的体验),我可能需要咬咬牙,把它记住。

我的问题

根据以上信息,针对我们的项目,各种Python/PHP网页框架的相对优缺点是什么?正如上面提到的,我特别对web2py感兴趣,因为它与jQuery的整合很好,但Django的主导地位(再次)让人难以忽视。

非常感谢您的时间!

5 个回答

0

我建议你去它的邮件列表上问关于web2py的问题,那里的朋友们会给你很多帮助和建议。关于LGPL许可证,记住它只适用于框架本身,而不适用于你的应用程序——你可以随意给你的应用程序授权,包括闭源或商业用途。

听起来你可能需要一些服务器推送的功能,但如果你只需要少量的长连接,可能不需要去使用像Twisted或gevent这样的解决方案。不过,如果有必要的话,web2py确实包含了这个功能(需要Tornado,并且是通过WebSockets来工作的,不过也可以调整成使用其他方法)。

1

Python和PHP:Python

用Python的话,你可以为C语言的代码写一些“包装器”,这样就不用去启动其他进程或者传递参数了。这对你的安全功能可能会很有帮助。

Web2py也能让你轻松地写一个网络服务,这样就能更方便地把C语言的部分和网站的基础设施结合起来。

如果你已经喜欢Python,那就继续用它吧。如果以后需要招一些会PHP的网页开发者,教他们Python也很简单。他们很快就能学会,而且长远来看,他们会感激你的。此外,从PHP的MVC框架转到web2py或者django会更容易。我用过PHP的CodeIgniter,发现web2py简单多了,更容易理解。

还有,关于目录结构,django其实并不是真正的MVC,它是MTV(模型、模板、视图)。

我觉得web2py的组织结构更直接。不过,刚开始的时候,可能都会觉得有点奇怪。我会说,没错,你应该勇敢地使用MVC。

在web2py中,“视图”是HTML标记,并且可以写原生的Python代码。控制器从模型(数据库)中提取数据,附加任何需要的文件(比如css/js等),而模型则定义了数据的结构,并允许你以面向对象的方式访问它。

最后,我不会因为jQuery的集成就特别偏爱web2py。它确实使用了jQuery,而且一些内置的框架功能(比如response.flash/session.flash,还有LOAD函数,用来加载其他控制器的页面或数据)依赖于jQuery,但在其他框架中使用它只需要写一个引入语句(例如)。

不过,web2py让你专注于开发的方式才是我最看重的地方。

2

在决定使用哪个框架之前,你首先要想清楚自己是否愿意学习一种不熟悉的编程语言。

你提到你们对PHP的经验很少,所以你需要考虑一下其中的利弊;选择PHP的好处(如果有的话)是否能弥补开发者需要花时间重新学习的成本?(不过根据你的背景经验,学习PHP应该是相对简单的。)

如果从这个角度来看,PHP必须有非常吸引人的优点才能让你选择。从我看到的情况来看,Django和web2py在功能上似乎非常接近——这很好,但并没有提供那种“你必须使用哪个”的强烈理由。

不过,如果你打算以后再招更多人,而觉得找会web2py的人会比较困难,那可能就会倾向于选择PHP。你自己也说了,Django的受欢迎程度(还有BSD许可证)是很难忽视的,这应该会让你在后续扩展时更容易找到合适的人。

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

撰写回答