Dieser Artikel wurde maschinell übersetzt. (Haftungsausschluss)
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 erscheinen. 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 Komponente lbvserver-comp
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 die NetScaler Console importiert wird.