Python上的多层架构实现

时间:2011-05-04 08:10:55

标签: python

我需要创建Web应用程序,用户可以将其作为常规Web站点和XML-RPC Web服务访问。网站也应该有移动版本。我打算使用下一代技术:

  • Django(适用于网络前端(常规和移动))。
  • 金字塔(用于网络服务)。
  • SQLAlchemy,Memcached(用于持久性级别)

后来其他项目可以获得这些数据并提供逻辑,所以我认为制作两层更好。我从下面看到了它:

  • 第1层。主要逻辑服务级别。此级别将为前端应用程序提供API(例如,Django支持的网站)。
  • 第2层。主要是不同的终端客户端应用程序(网站,远程客户端设备的API)。

对于这些层之间的通信,我打算使用XML-RPC协议。 在这种情况下,很容易扩展它并添加新的前端应用程序或将其他项目连接到此(我相信它)。

我有一个主要问题, - 我可以使用什么来轻松构建第一层?也许有一些框架对此有好处? 您如何看待整个架构?因为我正在填补我用Python开发的Java术语。也许在这种情况下,Python世界中还有另外一些习语。

谢谢你的时间和帮助。

P上。 S. 欢迎阅读一些链接。

2 个答案:

答案 0 :(得分:4)

这种架构真的没有意义。您正在使用Django,一个完整的堆栈Web框架,用于前端,但不将它用于数据库。并且您正在为Web服务端使用另一个全栈Web框架Pyramid,从而确保您复制所有业务逻辑。

就像我是Django的倡导者一样,我会说它在你的架构中没有位置。看起来你唯一真正使用它的是URL路由和模板,这两者都是金字塔本身很好的 - 你甚至可以使用基于Django模板语言的Jinja2作为金字塔中的模板语言,如果你喜欢的话

这样做意味着您可以在前端和Web服务代码之间共享业务逻辑,因为您几乎肯定会发现很多内容都是相同的。

我还必须说,我不理解分层,你已经描述过与前端/网络服务部门分开。对我来说,Web服务的第二层。进一步划分是没有意义的。

答案 1 :(得分:0)

你应该检查Turbogears框架,因为它由几个流行的组件组成:ORM与sqlalchemy,逻辑的pylons和对WSGI的支持,允许为前端支持几个模板引擎......无穷无尽。

我将它用于支持AJAX的前端(如基于Flex的应用程序等)的多个Web服务。您可以使用apache或您最喜欢的支持WSGI的Web服务器前端基于TG2的webapp。

查看他们的网站,因为他们有一个教程,可以在20分钟内设置一个wiki。

干杯!