Eigenschaften-Default-Source-Konstrukt

Das Eigenschaften-default-sources-Konstrukt ist analog zum Konstrukt parameters-default-sources. Während das parameters-default-sources-Konstrukt die Wiederverwendung vorhandener Parameter (aus anderen StyleBooks) in einem StyleBook ermöglicht, Properties-default-sources-Konstrukt dem Benutzer Eigenschaften einer Komponente basierend auf vorhandenen Quellen angeben.

Die Eigenschaften einer Komponente können über verschiedene Abschnitte des StyleBook verteilt werden. Beispielsweise können die Eigenschaften von Objektparametern, Substitutionen, die ein Objekt zurückgeben, Eigenschaften anderer Komponenten oder Ausgaben anderer Komponenten stammen. In solchen Fällen müssen Sie die Eigenschaften, die in anderen Abschnitten des StyleBook in der Definition der Komponente auftreten, neu definieren. Offensichtlich ist dies redundant und kann zu Fehlern führen. Um dieses Problem zu lösen, können Eigenschaften-default-sources-Konstrukt verwendet werden. Das Eigenschaften-default-sources-Konstrukt ist eine Liste, in der jedes Element eine Quelle für einige Eigenschaften der Komponente identifiziert.

Betrachten Sie beispielsweise eine Komponente, die eine lbvserver-Konfiguration erstellt. Diese Komponente sollte die Eigenschaften des lbvservers wie folgt definieren.

parameters:

  -

    name: lb

    type: ns::lbvserver

components:

  -

    name: lb-comp

    type: ns::lbvserver

    properties:

      name: $parameters.lb.name

      ipv46: $parameters.lb.ipv46

      port: $parameters.lb.port

      servicetype: $parameters.lb.servicetype

      lbmethod: $parameters.lb.lbmethod

Beachten Sie im obigen Beispiel, dass die Werte für alle Eigenschaften, die im Komponentenabschnitt definiert sind, aus $parameters.lb Objekt genommen werden. Obwohl sie aus einer einzigen Quelle stammen, werden die Eigenschaften im StyleBook erneut definiert. Wenn außerdem ein neuer Unterparameter für $parameters.lb-Objekt hinzugefügt wird, der für die Konfiguration des lbvservers relevant ist, müssen Sie die lb-comp-Komponente aktualisieren, um die neue Eigenschaft hinzuzufügen, die dem neuen Unterparameter entspricht.

Um eine Neudefinition von Eigenschaften zu vermeiden und alle relevanten Eigenschaften einer Komponente abzurufen, ohne sie explizit im Eigenschaftenabschnitt aufzulisten, kann Eigenschaftendefault-sources-Konstrukt verwendet werden. Das obige Beispiel kann wie folgt geschrieben werden.

parameters:

  -

    name: lb

    type: ns::lbvserver

components:

  -

    name: lb-comp

    type: ns::lbvserver

    properties-default-sources:

      - $parameters.lb

Im obigen Beispiel führt die Verwendung von Eigenschaften-default-Source-Konstrukt zu einer Verringerung der Größe der Komponentendefinition, und dies ermöglicht es Ihnen, eine Komponente prägnant zu definieren. Darüber hinaus werden jedes Mal, wenn sich die Quelle der Eigenschaften der Komponente ändert, die Änderungen automatisch reflektiert. Wenn beispielsweise im $parameters.lb-Objekt eine neue Eigenschaft, z. B. persistencetype, hinzugefügt wird, wird diese Eigenschaft standardmäßig der Konfiguration von lb-comp hinzugefügt, da persistencetype eine Eigenschaft von lbvserver ist. Somit bietet Eigenschaften-default-sources-Konstrukt eine dynamische Schnittstelle, um die Komponenten zu definieren, ohne sich Gedanken über Änderungen an den Quellen der Eigenschaften der Komponente zu machen.

Berechnung der Eigenschaften der Komponente

In diesem Abschnitt wird erläutert, wie die Eigenschaften abgerufen werden, wenn Eigenschaften-default-sources-Konstrukt in einer Komponente verwendet wird. Zunächst identifiziert der StyleBooks-Compiler die Liste der Eigenschaften einer Komponente basierend auf ihrem Typ (im obigen Beispiel lbvserver). Als nächstes holt der Compiler diese Eigenschaften aus den mehreren Quellen in der Reihenfolge, in der sie definiert sind (im Abschnitt Eigenschaften-default-sources der Komponente). Wenn eine Eigenschaft in mehreren Quellen vorhanden ist, hat die Eigenschaft, die in der letzten Quelle angezeigt wird, Vorrang vor anderen. Schließlich kann eine Eigenschaft, die mit Eigenschaften-default-sources-Konstrukt abgerufen wird, im Eigenschaftenabschnitt der Komponente außer Kraft gesetzt werden. Es ist wichtig zu beachten, dass die Definition eines Komponentenabschnitts mindestens einen Eigenschaften-default-sources-Abschnitt oder einen Eigenschaftenabschnitt haben sollte. Es kann beides haben.

Eigenschaften-Default-Source-Konstrukt