【发布时间】:2016-08-17 13:30:04
【问题描述】:
我正在设计一个编排引擎,它可以在多种环境中自动执行任务:JavaScript Web UI、Python Web 服务器和 c 运行时。一种可能的方法是用每种语言编写编排核心。这似乎很脆弱,因为每个新的引擎功能都需要添加到每种支持的语言中(并且必须多次解决错误,同时处理每种语言的不同习语)。另一种方法是用最低公分母语言(可能是 c)编写一次核心,然后用其他语言包装它。但是,我认为将编译后的库部署到浏览器将是一场噩梦,如果不是不可能的话。所以,我正在考虑的另一个选择是模板和代码生成。然后可以编写一次引擎(可能用 Python),然后使用 jinja 模板将工作流编译到每个目标。
最后一种方法听起来可行吗?如果我走那条路,我应该注意哪些陷阱?我是不是应该把它吸干,把引擎写三遍?
【问题讨论】:
-
您的意思是重新实现 Chef 或 Ansible?
-
@JohnZwinck 嘿,好问题!我不这么认为,因为我不处理服务器配置和应用程序部署。即使我是,人们也觉得 ansible 和 salt 有空间;)但不,这更多是关于多个运行时中的数据处理。
标签: python code-generation jinja2 template-engine software-design