我从事具有非常复杂的XML配置的项目,而面临的一个问题是保持XML的内部一致性。

在这种情况下,我并不是说严格的XML模式一致性,而是所使用的节点之间的较高级别关系。大多数问题是由XML中编码的信息以及该信息与代码库的隐式关系引起的。示例可能是:

  • XML节点数据隐式链接到代码中的枚举
  • 相关配置中的业务对象(因为它们共享需要一致的信息),而无需任何明确关系
  • XML的代码将在运行时进行编译和解析

令我震惊的是,a)这可能成为增加频率的实践,b)在某些情况下,我们隐含地创建了一种未经编译时间检查的新编码语言 - 实际上,直到运行才几乎没有检查。

还有其他人面临类似情况,并且是否有任何使问题更容易解决的工具或方法?我想要一些技术 - 敏捷的一般示例 - 我自己的特定经验是在C#和专有系统的配置中。

注意:尽管我对此有答案,但我无意作为最终答案。

有帮助吗?

解决方案

这将在很大程度上取决于您用于项目的语言/框架/工具。

使用XML进行配置可能确实是有问题的,因为无法检查时间。

例如,使用Java和 春季框架, ,存在一个日食插件称为 弹簧工具套件 可以在XML配置和实际代码之间进行同步检查。

但这只是特定语言和特定框架的一个示例。您应该尝试找出是否存在类似的情况。

顺便说一句,如果您让我们知道您正在使用的技术,我们可能会为您提供更多帮助。

其他提示

您尝试过示意图吗?http://www.schematron.com/

这是一种针对语义验证XML的更高级别的语言,而不仅仅是句法。

另请参见Wikipedia: http://en.wikipedia.org/wiki/schematron

我使用自动化功能测试来确保工作中默认配置的数据完整性。我不知道您描述的问题一定取决于XML的配置格式。话虽如此,我建议:

  • 您不将XML用作配置格式。 (Google可以为您提供理由)
  • 通过枚举或任何其他构造的值的隐式使用,在配置中与代码中的任何其他构造值一样糟糕。
  • 从配置中取出的代码使我感到畏缩。是在配置中可以被覆盖吗?如果是这样,那是错误,未定义的行为和潜在安全问题的巨大向量。
  • 业务对象问题也听起来像是糟糕的紧密耦合。

您可能无法对XML做任何事情作为配置格式,不良耦合或配置执行代码。您可以通过创建一系列功能测试来确保以确保:

  • 枚举有效
  • 该代码是可编译的,可执行的,不包含EVALS,RPC调用,呼叫无功能或您要添加的任何其他分析检查。

您有时还可以通过提供替代方案(配置或配置条目)来帮助更改。

@david Peleg的一个很好的链接是 拓扑, ,提供用于检查XML的产品,包括“业务规则”检查。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top