Citrix应用程序交付管理服务

依赖检测

样本中的组件可以引用同一样本中的其他组件的属性或部分。组件本身就是完整的块,可能无法按照必须运行的顺序写入。样本编译器会检查组件的编写顺序,然后按逻辑顺序运行它们。

示例

—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。创建绑定属性:name: $components.lbvserver-com .properties.nameservicegroupname - name: sg-comp type: ns::servicegroup properties: servicegroupname: mysg servicetype: HTTP 

在上面的例子中,定义了三个组件-lbvser-complb-sg——绑定——复合和sg公司。运行此样书时,首先创建了lbvserver组件lb sg绑定组件是指lbvserver组件属性,但下一步无法创建它,尽管它是样书中定义的第二个组件。这是因为lb sg绑定组件也依赖于尚未创建的sg公司。因此,编译器会对组件重新排序,以便在创建组件时解析组件的依赖关系,然后运行此重新排序的组件列表。上述样书的执行顺序是:lbvserver组件sg公司lb sg绑定组件

这样,样本的作者不必担心组件的正确顺序。组件可以按任何顺序显示。编译器根据组件相互引用的情况计算组件的正确执行顺序。请注意,这也适用于替换和输出部分。

循环依赖项

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

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

—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。创建绑定属性:name: mylb servicegroupname: $components.sg-comp.properties。Servicegroupname - name: sg-comp type: ns::servicegroup properties: Servicegroupname: mysg servicetype: $components.lbvserver-comp.properties。servicetype < !——NeedCopy >

在上面的例子中,有三个组件:lbv服务器做伴奏lb sg绑定组件sg公司lbvserver组件组件取决于lb sg绑定组件lb-sg绑定组件。而且,这些组件取决于sg公司sg公司组件取决于lbvserver组件。此处,在这些组件之间形成了依赖项循环,这无法自动解析。因此,无法运行此样书。样本编译器检测到此问题并阻止样本导入 Citrix行政

依赖检测