Citrix Application Delivery Management-Service

Abhängigkeitserkennung

Komponenten in einem StyleBook können auf Eigenschaften oder Abschnitte anderer Komponenten im selben StyleBook verweisen. Komponenten sind selbst komplette Blöcke und werden möglicherweise nicht in der gleichen Reihenfolge geschrieben, in der sie ausgeführt werden müssen. Der StyleBook-Compiler überprüft die Reihenfolge, in der die Komponenten geschrieben werden, und führt sie dann in einer logischen Reihenfolge aus.

Beispiel:

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

Im obigen Beispiel gibt es drei Komponenten definiert - lbvserver-comp, lb-sg-binding-compund sg-comp. Wenn Sie dieses StyleBook ausführen, lbvserver-comp wird das zuerst erstellt. Das lb-sg-binding-comp bezieht sich auf lbvserver-comp Eigenschaften, kann jedoch nicht als nächstes erstellt werden, obwohl es die zweite im StyleBook definierte Komponente ist. Dies liegt daran, dass der lb-sg-binding-comp auch eine Abhängigkeit von dem hat sg-comp, das noch nicht geschaffen werden muss. Infolgedessen ordnet der Compiler die Komponenten neu an, sodass die Abhängigkeiten einer Komponente zum Zeitpunkt der Erstellung einer Komponente aufgelöst werden, und führt diese neu geordnete Liste von Komponenten aus. Die Ausführreihenfolge des obigen StyleBook ist: lbvserver-comp, sg-comp und lb-sg-binding-comp.

Daher muss sich der Autor eines StyleBook nicht um die korrekte Reihenfolge der Komponenten kümmern. Die Komponenten können in beliebiger Reihenfolge angezeigt werden. Der Compiler berechnet die korrekte Reihenfolge der Ausführung der Komponenten basierend darauf, wie die Komponenten einander verweisen. Beachten Sie, dass dies auch für Abschnitte zu Substitutionen und Ausgaben gilt.

Zyklische Abhängigkeiten

Da sich eine Komponente möglicherweise auf eine andere Komponente bezieht, ist es möglich, dass der Abhängigkeitskreislauf in die Definition des StyleBook eingeführt wird. Beispiel: Wenn Komponente A auf eine Eigenschaft verweist, die in Komponente B definiert ist, die wiederum auf eine Eigenschaft verweist, die in Komponente A definiert ist. Diese Art von Abhängigkeit wird als zyklische Abhängigkeiten bezeichnet. Zyklische Abhängigkeiten können nicht automatisch aufgelöst werden. Der Autor des StyleBook korrigiert die StyleBook-Definition manuell, um solche zyklischen Abhängigkeiten zu eliminieren. Der Compiler kann zyklische Abhängigkeiten identifizieren - wenn sie existieren, und melden.

Das folgende Beispiel zeigt eine zyklische Abhängigkeit von Komponenten:

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

Im obigen Beispiel gibt es drei Komponenten: lbvserver-comp, lb-sg-binding-compund sg-comp. Die lbvserver-comp Komponente hängt von den Komponenten lb-sg-binding-comp, lb-sg-binding ab. Und diese Komponenten hängen davon ab sg-comp. Die sg-comp Komponente hängt davon ab lbvserver-comp. Hier wird ein Zyklus von Abhängigkeiten zwischen diesen Komponenten gebildet, der nicht automatisch aufgelöst werden kann. Daher kann dieses StyleBook nicht ausgeführt werden. Der StyleBook-Compiler erkennt dies und verhindert, dass das StyleBook in Citrix ADM importiert wird.

Abhängigkeitserkennung