Python中的多层架构实现

0 投票
2 回答
3593 浏览
提问于 2025-04-16 16:57

我需要创建一个网络应用程序,用户可以像访问普通网站一样访问它,同时它也能作为一个XML-RPC网络服务。这个网站还需要有移动版本。我计划使用以下技术:

  • Django(用于网站前端,包括普通版和移动版)。
  • Pyramid(用于网络服务)。
  • SQLAlchemy、Memcached(用于数据存储)。

以后其他项目可以访问这些数据并提供逻辑,所以我觉得把它分成两个层次会更好。我想的结构是这样的:

  • 第一层:主要的逻辑服务层。这个层次会为前端应用程序提供API(比如基于Django的网站)。
  • 第二层:不同的主要是终端客户端应用程序(网站、远程客户端设备的API)。

为了让这两个层次之间能够沟通,我打算使用XML-RPC协议。这样的话,扩展和添加新的前端应用程序或者连接其他项目会变得简单(我相信是这样的)。

我有一个主要的问题——我可以用什么来方便地构建第一层?也许有一些适合的框架?你对这个整体架构有什么看法?因为我感觉我在用Java的思维方式来开发Python的东西。也许在Python的世界里有其他更合适的思路来应对这种情况。

谢谢你的时间和帮助。

附言:欢迎提供一些阅读链接。

2 个回答

0

你可以看看Turbogears框架,它由几个流行的组件组成:使用sqlalchemy的ORM(对象关系映射),用于逻辑处理的pylons,还有对WSGI的支持,前端可以使用多种模板引擎……真是无穷无尽。

我用它来做几个支持AJAX的网页服务(比如基于Flex的应用等)。你也可以用apache或者你喜欢的支持WSGI的网页服务器来运行基于TG2的网页应用。

去他们的网站看看吧,他们有一个教程,可以在20分钟内教你如何搭建一个wiki。

祝好!

4

这个架构真的是不太合理。你在前端使用了Django,一个完整的网页框架,但却没有用它来处理数据库。而且你还用了Pyramid,另一个完整的网页框架,来做网络服务,这样就导致你把所有的业务逻辑都重复了一遍。

虽然我很支持Django,但我觉得它在你的架构中没有什么用处。看起来你真正用它的地方就是处理网址路由和模板,而这两样Pyramid也能很好地做到——如果你愿意的话,甚至可以在Pyramid中使用基于Django模板语言的Jinja2作为模板语言。

这样做的好处是,你可以在前端和网络服务代码之间共享业务逻辑,因为你会发现很多逻辑是相同的。

另外,我也不太理解你提到的分层结构,似乎和前端/网络服务的划分是分开的。对我来说,网络服务就是第二层,进一步的划分没有意义。

撰写回答