Servicezugriffsvariable dynamisch binden

Mit einem dynamischen Binding können Sie entweder zur Laufzeit einen Service auswählen oder den Service ändern, an den eine Variable gebunden ist.

Zum dynamischen Binden einer Variablen müssen Sie anstelle der Eigenschaft @BindService Funktionen in der EGL-Bibliothek ServiceLib verwenden. Diese Option steht für den Zugriff auf einen dedizierten Service über einen Rich-UI-Handler oder eine zugehörige Bibliothek nicht zur Verfügung.

Nehmen wir an, Sie haben für zwei leicht unterschiedliche Serviceimplementierungen Einträge in der Implementierungsdeskriptordatei erstellt:
<webBinding interface="interfaces.SpeechTranslator" 
    name="TranslateSpanish" port="SpanishPort"/>

<webBinding interface="interfaces.SpeechTranslator" 
    name="TranslateGerman" port="GermanPort"/>
Sie könnten zwei Variablen erstellen und binden, eine für jeden dieser Einträge. Alternativ wäre die Erstellung einer Variablen möglich, die auf dem Schnittstellenabschnitt basiert, der von den Einträgen gemeinsam genutzt wird. Anschließend können Sie die Systemfunktion ServiceLib.bindService() verwenden, um die Variable an den gewünschten Service zu binden:
  1. Erstellen Sie eine Variable, die auf dem Schnittstellen- oder Serviceabschnitt im Implementierungsdeskriptoreintrag basiert:
    myTranslator SpeechTranslator;
  2. Verwenden Sie die Funktion bindService(), um die Variable an die Serviceimplementierung zu binden:
    myTranslator = ServiceLib.bindService("TranslateSpanish");
    In diesem Fall ist die Variable myTranslator nun an den Eintrag TranslateSpanish gebunden.
  3. Verwenden Sie die Variable, um auf den Service zuzugreifen:
    mySpanishString string = myTranslator.translate
        ("This sentence is in Spanish");
  4. Sie können die Funktion bindService() erneut verwenden, um den Service an eine andere Implementierung zu binden:
    myTranslator = ServiceLib.bindService("TranslateGerman");
  5. Sie können die Variable nun für den Zugriff auf den alternativen Service verwenden:
    myGermanString string = myTranslator.translate
        ("This sentence is in German");

Feedback