Linux配置工具的通用系统架构

4
我将为基于Ubuntu的系统编写配置工具。接下来,我想编写前端(文本、GUI和Web)。但这是我想要编写的最复杂的项目,我不确定应该使用什么样的总体架构。
目前,我有用于更改系统配置的函数和类。但这些函数可能会增长和更改。@Abki gave 给了我关于如何为前端编写接口的建议。我将为此接口制作基础类,但我不知道如何将其与后端连接,然后再与前端连接。可能我应该使用像 fasade、wrapper 或其他设计模式。
看起来像是(没有接口到后端层):

enter image description here

我现在不关心UI和更改系统配置的功能。但是我不知道如何编写中间层,以便将其与其他部分轻松连接并扩展未来的功能。
我需要一般的想法、设计模式和建议,以便在Python中实现它。
3个回答

1

我不确定这是否完全适合SO,但我很感兴趣,所以我会回答。作为一个Ruby程序员,我对Python帮不上什么忙,但是根据我的经验,以下是一些关于模式的看法。

我的初步建议是您应该查看一些竞争对手。具体来说,我会看看cfengine、chef和bcfg2。它们各自讲述了不同的故事,但如果我要总结,我会说:

  • Chef有一个可爱的DSL语法,但架构复杂
  • bcfg2是用Python编写的,但似乎有使用XML的恼人倾向:(
  • cfengine在承诺理论方面具有最强的理论基础(顺便说一句,这非常有趣),但是基于C。

维基百科还提供了一个相当不错的配置管理工具列表,您会发现它很有用。

关于设计自己的工具,我建议您追求三个原则:

  1. 简单性,越简单越好。在范围、配置和使用方面都要简单。
  2. 您需要一种单一的数据存储方式,以便能够跟踪所做出的选择,并且不会覆盖其他人的更改(特别是在团队环境中)。
  3. 安全性,大多数配置管理工具在某些时候需要 root 权限。因此,您需要确保用户可以信任他们运行的代码。

1

0
如果你使用Python编写GUI、文本/CLI和Web界面,它们都可以使用同一个Python模块。这样,对一个界面的更改会自动影响其他界面。此外,所有这些都在Python的强项领域内。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接