Application Delivery Management

这篇文章已经过机器翻译.放弃

依赖性检测

样书中的组件可以引用同一样书中的其他组件的属性或部分。组件本身是完整的块,它们的编写顺序可能与必须执行的顺序不同。样本编译器会检查组件的编写顺序,然后按逻辑顺序执行这些组件。

示例

components: - name: lbvserver-comp type: ns::lbvserver properties: name: mylb ipv46: 10.102.190.15 port: 80 servicetype: HTTP - name: lb-sg-binding-comp type: ns::lbvserver_servicegroup_binding condition: $parameters.create-binding properties: name: $components.lbvserver-comp.properties.name servicegroupname: $components.sg-comp.properties.servicegroupname - name: sg-comp type: ns::servicegroup properties: servicegroupname: mysg servicetype: HTTP

在上面的例子中,定义了三个组件- lbvser-complb-sg-绑定-复合和 sg-comp。执行此样本时,先创建 lbvserver-comp。lb-sg-binding-comp 引用 lbvserver-comp 属性,但尽管它是样本中定义的第二个组件,但不能接下来创建它。这是因为 lb-sg-binding-comp 还依赖也要创建的 sg-comp。因此,编译器对组件重新排序以使组件的依赖项按组件的创建时间进行解析,然后执行此重新排序的组件列表。上述样本的执行顺序为:lbvserver-comp、sg-comp 和 lb-sg-binding-comp。

这样,样书的作者不必担心组件的正确顺序。组件可以按任何顺序显示。编译器根据组件相互引用的情况计算组件的正确执行顺序。请注意,此依赖项检测和重新排序也适用于 substitutions 和 outputs 部分。

循环依赖项

由于组件可能会引用其他组件,因此可能会在样本的定义中引入依赖项循环。例如,如果组件 A 引用组件 B 中定义的一个属性,而后者也引用组件 A 中定义的一个属性。这种依赖项称为循环依赖项。循环依赖项无法自动解析。样本的作者应该手动更新更正样本定义以消除此类循环依赖项。编译器能够识别循环依赖项(如果存在)并报告。

以下示例显示了组件的循环依赖项:

components: - name: lbvserver-comp type: ns::lbvserver properties: name: $components.lb-sg-binding-comp.properties.name ipv46: 10.102.190.15 port: 80 servicetype: HTTP - name: lb-sg-binding-comp type: ns::lbvserver_servicegroup_binding condition: $parameters.create-binding properties: name: mylb servicegroupname: $components.sg-comp.properties.servicegroupname - name: sg-comp type: ns::servicegroup properties: servicegroupname: mysg servicetype: $components.lbvserver-comp.properties.servicetype

在上面的示例中,有三个组件:lbvserver-complb-sg-binding-compsg-comp。lbvserver-comp 依赖于 lb-sg-binding-comp,lb-sg-binding comp 依赖于 sg-comp,sg-comp depends 依赖于 lbvserver-comp。此处,在这些组件之间形成了依赖项循环,这无法自动解析。因此,无法执行此样书。样本编译器检测到此问题并阻止样本导入 NetScaler ADM。

本内容的正式版本为英文版。部分 Cloud Software Group 文档内容采用了机器翻译,仅供您参考。Cloud Software Group 无法控制机器翻译的内容,这些内容可能包含错误、不准确或不合适的语言。对于从英文原文翻译成任何其他语言的内容的准确性、可靠性、适用性或正确性,或者您的 Cloud Software Group 产品或服务沿用了任何机器翻译的内容,我们均不作任何明示或暗示的保证,并且适用的最终用户许可协议或服务条款或者与 Cloud Software Group 签订的任何其他协议(产品或服务与已进行机器翻译的任何文档保持一致)下的任何保证均不适用。对于因使用机器翻译的内容而引起的任何损害或问题,Cloud Software Group 不承担任何责任。
依赖性检测