2012-01-26 56 views
4

我将为我的基于Ubuntu的系统编写配置工具。接下来我想写前端(文本,图形用户界面和网络)。但这是我想写的最复杂的项目,我不确定我应该使用的通用架构。用于Linux配置工具的通用系统架构

在目前我有改变系统配置的功能和类。但这些功能可能会增长&的变化。 @Abki gave我的建议如何为前端编写接口。我将为此接口创建基类,但我不知道如何将它与后端连接,然后再与前端连接。可能我应该使用设计模式,如fasade,包装或其他。

它看起来像(不interface_to_backend层​​):

enter image description here

我不关心UI和功能改变现在的系统配置。但我不知道如何编写中间层,因此可以很容易地将其与其余的连接起来,并在未来扩展功能。

我需要一般的想法,设计模式,建议如何在Python中实现这一点。

回答

0

如果使用Python编写GUI,文本/ CLI和Web界面,它们都可以使用相同的Python模块。这样,一个界面的变化就会透明地影响其他界面。再加上所有这些都是Python的优势所在。

1

我不确定这是否完全适合于SO,但我很感兴趣,所以我会咬人。作为一名红宝石主义者,我对Python的帮助不大,但从我的经验来看,这里有一些关于模式的看法。

我最初的建议是你应该回顾一下那里的一些竞争者。具体来说,我会看cfengine,厨师和bcfg2。他们每个人都讲一个不同的故事,但如果我总结我会说:

  • Chef有一个可爱的DSL语法,而是通过一个复杂的架构
  • bcfg2是用Python编写失望,但似乎有一个恼人倾向使用XML :(
  • cfengine在承诺理论最强的理论基础(这是BTW v.interesting),但基于C语言。

维基百科还提供了一个相当令人印象深刻列表,你会发现有用的。

至于设计自己的工具,我建议你有你想追求三个原则:

  1. 简单,越简单,你让这个更好。简单的范围,配置和使用都很重要。
  2. 您需要一种单一的方式来存储数据,您需要能够追踪选择,而不是践踏其他人的更改(特别是在团队环境中)。
  3. 安全性,大多数配置管理工具在某些时候需要root权限。所以你需要确保用户可以信任他们正在运行的代码。