PHP,Python,PostgreSQL设计是否适合商业应用?

时间:2009-01-13 16:47:39

标签: php python postgresql

我正在寻找一些关于我希望构建的业务应用程序的快速想法。我想使用 PHP 分隔演示文稿域逻辑数据这三个层次, Python 和 PostgreSQL 。我想听听,可能来自其他曾经走过这条道路的人,如果这种方法存在问题,我是否针对错误的工具等等。

  • 我正在寻找 PHP ,因为它被广泛使用,相当成熟,而且我可以找到很多具备PHP界面设计技能的人。

  • 我正在寻找 Python ,因为可读代码的好处,因为我听说可以找到更多具有主题技能的Python程序员(在这种情况下,是财务),它是一种开源语言。另外,编码似乎更容易。

  • 我正在查看 PostgreSQL 以获取交易级功能。 MySQL 也是一个选项,但我不需要讨论这个方面。

这不是一个Web应用程序,虽然我想将浏览器用于用户界面。这更像是一个企业应用程序,但适用于具有中等数量用户(可能是5-10)和适度数量的日常交易的小型企业。

重要的是,我们将来能够将数据库或域逻辑或接口与其他层分开升级。

我不是在寻找购买与建立辩论,因为这是一个不同的讨论。

感谢您的任何见解

7 个答案:

答案 0 :(得分:11)

请看Django

Python代码。一种模板语言,它允许一些与PHP相同的功能 - 语法略有不同。

模型与视图函数(“业务规则”)脱离并与表示离婚。这在整个Django中都得到了强制执行。

常见的问题之一是“我为什么不能这样做 - 在Django模板中有些疯狂的类似PHP的东西?”答案是演示文稿不是处理。在Django视图函数中进行处理。在模板中将结果呈现为HTML。

此外,Django有一个ORM层可以让你从小的SQL考虑中解脱出来。 MySQL或PostgreSQL在Django中或多或少都是等价的。


修改

“成熟度”意味着很多事情。你特别提到熟练的人是成熟的标志。

Django是纯Python。如果你能找到Python的人,他们可以在几天内学习Django。他们只需要做教程。

  • 一个Django支持的站点通常是Apache +一些粘合剂+ Django。胶水可以是mod_wsgi或mod_python或mod_fastcgi。您必须小心管理此配置,因为有多个移动部件。但是,这与PHP中的Apache配置问题相同 - 这里没什么新的。

  • Django站点有一个或多个Django服务器实例,每个实例都有一个设置文件,一个URL映射和任意数量的应用程序。此时纯Python。

  • Django应用程序具有URL映射,模型和视图。全纯Python。单元使用Django扩展到Python自己的内部单元测试框架。

  • 该模型使用ORM图层。这可能是Django中最令人困惑的事情。人们有时会设计非常奇怪的模型,因为他们认为过于高级 - 超级 - 通用或者他们在SQL中思考太多。 Django是一个主要面向对象的中间层,有一些SQL考虑因素。得到这个,你就是不可阻挡的。

  • Django应用程序可能有模板,这些模板使用自己的模板语言。这将是唯一非常感兴趣的非Python事物。您可能想要添加自定义标签 - 纯Python。

  • 您可能拥有JavaScript(对于PHP和其他所有Web应用程序框架也是如此)。这里没什么新东西。

  • 由于Django的管理应用程序自动处理基本的CRUD处理,因此您不必编写此代码。您可以自由编写所需的所有事务性内容。但你没必要。这会让你成为一个非常强大的混合体。

    • 您编写了一些复杂的关键事务。纯Python,BTW。

    • 您不会编写任何哑表维护事务。没有任何代码优于Python或PHP。

    • 使用模板引擎和CSS后,您可以定制管理界面,使其看起来像您想要的任何内容。这是HTML / CSS的东西,没有Python或PHP。

底线。大部分技能都是Python。 ORM在语法上是Python,但需要谨慎处理简单干净的事情。模板是它自己的语言,但比PHP简单得多。其余的是SQL,Javascript,HTML,CSS,Apache和什么不是。


修改

Django成熟度

Django博客可以追溯到05年,这意味着他们在08年9月最终发布1.0之前拥有多年的丰富经验。发展显然始于'03。

答案 1 :(得分:1)

我将假设“业务应用程序”是指托管在Intranet环境中的Web应用程序,而不是Internet上的某种SaaS应用程序。

当您正在构建应用程序时,您需要考虑现有的基础架构和基础架构支持您的雇主/客户的人员。此外,如果公司足够大,可以拥有诸如“批准的软件/硬件列表”之类的东西,那么你应该知道这些。请记住,列表中的某些元素可能是彻头彻尾的延迟。不要让过去的错误决定你的应用程序的架构,但是在他们合情合理的情况下,我会选择我的战斗并坚持你的企业标准。当你选择一个在Unix / Linux上真正最佳的开发堆栈时,这可能是一个真正的痛苦,然后有人试图强迫到一个Windows服务器,这个服务器是由一个除了ASP.NET应用程序之外从未接触过的人所为。

除非您打算使用没有Python等效的特定PHP模块,否则我会丢弃PHP并使用Django。如果有令人信服的理由使用PHP,那么我就放弃了Python。我很难想象你想要同时使用两者的场景。

对于PG与MySQL,要么有效。看看你的客户已经部署了什么,如果他们有一堆又一个,请选择那个。如果他们有现有的Oracle基础架构,您应该考虑使用它。如果他们是SQL Server商店......重新考虑你的筹码并记住选择你的战斗。

答案 2 :(得分:1)

我只能重复其他人已经说过的内容:如果你选择Python作为域层,你将无法获得任何东西(完全相反)使用PHP作为表示层。其他人已经建议Django,这可能是一个不错的选择,但不乏优秀的Python Web框架。

答案 3 :(得分:0)

我个人同意你帖子中的第二点和第三点。谈到PHP,在我看来你也可以使用Python进行演示,有很多基于Python的解决方案(Zope,Plone ......)。

答案 4 :(得分:0)

跳过PHP并使用Python(使用Django,就像我输入时已经注意到的那样)。正如你所提到的,Django已经将这些层分开了。

我自己从来没有使用过PgSQL,但我认为你更喜欢它而不是MySQL。它曾经支持比MySQL更多的企业功能,但我不确定MySQL 5.0和5.1是否仍然如此。无论如何,MySQL都支持事务(但是你必须使用InnoDB表引擎)。

答案 5 :(得分:0)

只是为了解决MySQL vs PgSQL问题 - 它应该没关系。他们都能胜任这项任务,而任何合理的框架都应该能够相对较好地区分你们。我认为这取决于你已经使用过的东西,人们最有经验的东西,以及你认为自己会从中受益的其中一个特征。

如果您没有偏好,您可能希望完全使用MySQL,因为它更适合网络工作。这可以转化为更多的例子,更容易找到帮助等等。我实际上更喜欢PgSQL的哲学,但这并不是吹风的好理由。

答案 6 :(得分:0)

只是把它扔出去......有使用MVC的PHP框架。

Codeigniter做简单但功能强大的事情。您绝对可以将模板层与逻辑层分开。