希望这个问题不是太笼统:
按照惯例,MDSD被定义为将模型规范转换为可编译程序的来源。
除此之外,人们可以解释一个模型。
虽然解释通常会更慢,但更新模型的部署可能会更简单。
一般来说:为什么要使用 MDSD 编译模型?什么时候应该解释模型?
希望这个问题不是太笼统:
按照惯例,MDSD被定义为将模型规范转换为可编译程序的来源。
除此之外,人们可以解释一个模型。
虽然解释通常会更慢,但更新模型的部署可能会更简单。
一般来说:为什么要使用 MDSD 编译模型?什么时候应该解释模型?
您所说的是“可执行规范”。这在您的规范完整时有效(例如,涵盖所有情况;许多当前的“模型”不完整,或者仅凭借中间的附加 Java 源代码文本才完整,这不容易解释) ,并且您的解释器足够快,因此用户群并不关心。
但这就是问题所在。编译器存在的全部原因是因为解释规范通常比已编译的等价物慢 100 倍。(曾经见过或真正使用过 C 解释器吗?)。
我不知道有多少人执行“模型”。我认为他们都认为解释器太慢了,或者他们被模型不完整/低级源代码阻抗不匹配所困扰。
在某些情况下,这两种策略都是有效且有价值的。
如果可能,模型解释策略可能比编译策略更好,因为您只需修改持久模型即可更改已部署应用程序的行为,而无需重新编译和部署。
但是您可能需要在以下情况下使用编译策略:
我最近开发了一个 GUI 模型编辑器,动态解释其模型以呈现完全可操作的表单编辑器。性能不是问题,但仍然为这些 GUI 生成了代码,因为我们有带有数千个参数(用于太空飞行动态应用程序)的巨大 GUI,以及许多需要一些额外源代码才能完全实现的自定义 UI 行为。