几个星期前,我问了一个问题"PHP,Python,PostgreSQL设计是否适用于非Web业务应用程序?" PHP,Python,PostgreSQL设计是否适合商业应用?
许多答案建议跳过PHP片段并使用Django构建应用程序.当我探索Django时,我开始质疑我的目标的一个特定方面以及Django如何为非Web业务应用程序发挥作用.
根据我的理解,Django将管理视图和控制器部分,PostgreSQL或MySQL将处理数据.但我的目标是明确地分离各个层,以便可以更改数据库,域逻辑和表示,而不会显着影响其他层.看起来我只是用Django解决方案将M与VC层分开.
那么,使用SQL Alchemy/Elixir ORM工具,PostgreSQL用于数据库层,然后仍然使用Django或PHP作为表示层,在Python中构建域层是否适得其反?这是可能的还是纯粹的疯狂?
基本上,我会看一下Django/PHP> Python/SQLAlchemy> PostgreSQL/MySQL的架构.
编辑:在粉丝们因为询问关于Django的问题而生我的生气之前,我们才意识到:这是一个问题,而不是一个指责.如果我知道答案或有自己的看法,我就不会问!
您似乎在说选择Django会阻止您以后使用更异构的解决方案.事实并非如此.Django在各层之间提供了许多有趣的连接,并且对所有层使用Django可以让您利用这些连接.例如,使用Django ORM意味着您几乎可以免费获得优秀的Django管理应用程序.
您可以选择在Django中使用不同的ORM,您只是不会获得管理应用程序(或通用视图).因此,一个不同的ORM会让你从完全Django自上而下退一步,但它并不是从其他异构解决方案向后退一步,因为这些解决方案首先没有为管理员应用提供内层优势.
不应该因为没有提供灵活的架构而批评Django:它与任何其他解决方案一样灵活,如果你选择换出一层,你就放弃了一些Django的好处.
如果你选择从Django开始,你现在可以使用Django ORM,然后,如果你需要切换,你可以转换到SQLalchemy.现在开始使用SQLalchemy并稍后转向其他ORM解决方案并不困难.
你还没有说过为什么你预计需要换掉图层.无论如何,这将是一个痛苦的过程,因为必然会有很多代码依赖于您当前使用的任何工具集和库的行为.
Django很乐意让你使用你想要的任何你想要的库 - 你想要一个不同的ORM,使用它,你想要一个不同的模板引擎,使用它,等等 - 但是它旨在提供一个许多可互操作应用程序使用的公共默认堆栈.换句话说,如果你换掉ORM或模板系统,你将失去与许多应用程序的兼容性,但是利用大量应用程序的能力通常会超过这个.
但是,从更广泛的角度来说,我建议您花一点时间阅读Web应用程序的架构模式,因为您似乎有一些重大的概念混淆.有人可能很容易说,例如,Rails没有"视图"层,因为您可以使用不同的文件系统作为视图代码的存储位置(换句话说:能够更改数据的位置和方式通过模型层存储并不意味着你不具备的模型层).
(这不用说,这是同样重要的是知道为什么"严"或"纯" MVC是一个绝对可怕的适用于Web应用程序,MVC在其纯粹的形式是与许多独立的方式应用中发起的互动,就像一个字处理器有很多工具栏和输入窗格,但当你移动到网络并且只有一种方式 - 一个HTTP请求 - 与应用程序交互时,它的好处很快就会消失.这就是为什么没有"真正的"MVC Web框架;他们都借用关于关注点分离的某些想法,但没有一个严格地实现模式)