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:- Erstellen Sie eine Variable, die auf dem Schnittstellen- oder Serviceabschnitt im Implementierungsdeskriptoreintrag
basiert:
myTranslator SpeechTranslator; - Verwenden Sie die Funktion bindService(), um die Variable an die Serviceimplementierung
zu binden:
In diesem Fall ist die Variable myTranslator nun an den Eintrag TranslateSpanish gebunden.myTranslator = ServiceLib.bindService("TranslateSpanish"); - Verwenden Sie die Variable, um auf den Service zuzugreifen:
mySpanishString string = myTranslator.translate ("This sentence is in Spanish"); - Sie können die Funktion bindService() erneut verwenden, um den Service
an eine andere Implementierung zu binden:
myTranslator = ServiceLib.bindService("TranslateGerman"); - Sie können die Variable nun für den Zugriff auf den alternativen Service
verwenden:
myGermanString string = myTranslator.translate ("This sentence is in German");