相反,声明性方法描述了您想要获得的结果,并且该工具负责自动实现它。例如地形。
声明式模型还具有命令式模型所没有的另一个属性:幂等性。这是一个操作可以执行任意多次并始终产生相同结果的属性。换句话说,无论该操作重复多少次,系统始终处于该操作仅执行一次时的状态。
我们有一个例子来理解汽车仪表板中的这种区别。空调 允许我们声明性地设置 温度,无论汽车内部的状况如何,因为它负责达到我们想要的温度,根据需要加热或冷却。
空调旁边有收音机,它有音量按钮,可以让您强制增大或减小音量,每次操作时都会改变音量。
让我们看另一个更具操作性的示例:如果我想为项目创 墨西哥电报数据 建特定的部署,使用声明式方法,我只需指示我选择使用哪个 docker 映像、副本数量以及带有哪些注释。相反,使用命令式方法,我必须描述一系列命令,这些命令准确地告诉管理工具要执行哪些步骤以及以什么顺序创建我想要的状态。
在许多工具中,两种不同类型的方法之间的区别并不总是那么明显:有些工具部分地使用声明性方法和命令性方法。事实上,一些声明性工具实际上对用户“隐藏”命令式函数。尽管许多命令式工具仍然具有声明式的自动化形式。
然而,正如我们稍后将看到的,这种区别是有用的,因为它使我们能够选择最适合我们需求的工具,并为我们想做的事情带来最大的优势。
不可变基础设施和可变基础设施:
在比较命令式和声明式方法之后,我们深入研究另一个重要的区别,即不可变基础设施和可变基础设施之间的区别。事实上,这两种基础设施之间的选择代表了采用基础设施自动化以及基础设施即代码时要做出的关键决策。