Frage

Ich bin daran interessiert, mehr über Eclipse RCP zu erfahren. Ich habe einige Grundkenntnisse, wollte aber mehr darüber erfahren, wozu es in der Lage ist.Deshalb habe ich mich dazu ermutigt, eine Reihe von Anforderungen zu erstellen, diese zu analysieren und Entwurfsentscheidungen darüber zu treffen, wie diese mit Eclipse RCP als Basis-Framework erfüllt werden können, und sie schließlich mit Eclipse RCP zu implementieren.Vielleicht sind die Anforderungen zu hoch oder ich verstehe Eclipse RCP einfach noch nicht so gut, dass es mir schwerfällt, geeignete Lösungen zu finden, um die Anforderungen zu erfüllen!

Das Folgende ist die Zusammenfassung der Anforderungen (bitte entschuldigen Sie den wahrscheinlichen Mangel an Details, dies ist wirklich nur ein Beispiel, um mich selbst zu ermutigen):

Ich wollte eine Eclipse RCP-Anwendung haben, um einige Server zu überwachen.Bei diesen Servern handelt es sich zunächst um Programme, die der Anwendung bekannt sind (d. h. sie kennt ihre Vor- und Nachteile genau).In Zukunft sollte die Anwendung jedoch in der Lage sein, Benutzern die Angabe beliebiger Programme mit unterschiedlichen Eigenschaften zu ermöglichen, die die Anwendung ebenfalls überwachen soll (also nicht nur bekannte Server, sondern auch einige andere Server, die ihr vorher nicht bekannt waren).Die Anwendung benötigt außerdem eine XML-Konfigurationsdatei, die alle Details der zu überwachenden Server enthält (z. B.Host, Port, Benutzername und Passwort).Diese XML-Konfigurationsdatei wird mit JAXB kodiert und dekodiert.

Basierend auf den oben genannten Anforderungen habe ich mir die folgenden Details ausgedacht:

Das XML sieht etwa so aus:

<configuration>
    <components>
        <serverA>
          <host></host>
          <port></port>
          <username></username>
          <password></password>
        </serverA>
        <serverB>
          <host></host>
          <port></port>
          <username></username>
          <password></password>
        </serverB>
        <!--- this will be the place for other components specified by user -->
    </components>
</configuration>

Wo und sind Server, die der Anwendung bekannt sind.

Im Quellcode gibt es die folgende Klassenhierarchie:

Komponente <--- Server <--- ServerA, ServerB

ServerA und ServerB stammen vom Server ab und werden jeweils einem Element zugeordnet.

Der Punkteintrag für die Konfiguration befindet sich in der Klasse „Configuration“, die eine Liste von ServerA und eine Liste von ServerB enthält.Da die Anwendung nun in der Lage sein sollte, andere Programme zu überwachen, von denen sie nichts wusste, sollte die XML-Konfigurationsdatei ebenfalls erweiterbar sein, sodass die Konfigurationsklasse auch eine Liste von Objekten enthält, die jeder anderen vom Benutzer in angegebenen Komponente zugeordnet werden können Konfigurationsdatei.

Konfiguration.java

public class Configuration
{
   @XmlElement
    private List<ServerA> serveras;

   @XmlElement
    private List<ServerB> serverbs;

   @XmlAnyElement
    private List<Object> otherServers;
}

Werden Sie das auch tun, um die Probleme anzugehen?Ich schätze, ich weiß es nicht, ich bin nur verwirrt über die Anforderung, dass die Anwendung in der Lage sein muss, andere vom Benutzer angegebene Programme zu überwachen.Ich weiß, dass ich es ursprünglich eingerichtet habe, aber ich habe es mit dem Gedanken gemacht, dass „das wie etwas aussieht, das die Erweiterungspunkte von Eclipse RCP nutzen kann“, aber nachdem ich jetzt in die Konfigurationsdatei gesprungen bin, weiß ich nicht, wie das gehen soll Bezieht sich die Konfigurationsdatei auf die Datei „plugin.xml“?

Im Hinterkopf wollte ich, dass die Konfigurationsdatei die Details (Host, Port, Benutzername und Passwort) der Programme angibt, die die Anwendung überwachen muss.Mit der Datei „plugin.xml“ werden die Erweiterungspunkte und Erweiterungen für benutzerdefinierte Programme angegeben, die die Anwendung ebenfalls überwachen muss.Bedeutet das also, dass Benutzer die benutzerdefinierten Programme letztendlich als Erweiterungen in der Datei „plugin.xml“ konfigurieren und dann ihre anderen Details in der Konfigurationsdatei angeben müssen?

War es hilfreich?

Lösung

Es gibt mehrere Möglichkeiten, dieses Problem anzugehen.Aber lassen Sie mich es versuchen.

Sie haben eine Reihe verschiedener Server mit unterschiedlichen Überwachungseigenschaften.Aber für Ihre Eclipse-Anwendung müssen sie alle ähnlich aussehen.

Nehmen wir an, Sie haben eine Eclipse RCP-Anwendung, die eine Benutzeroberfläche zum Überwachen eines Servers enthält.Für diese Anwendung sollte es keine Rolle spielen, um welche Server es sich tatsächlich handelt, aber es sollte eine gemeinsame Schnittstelle vorhanden sein, um eine Verbindung zu ihnen herzustellen.

Eine Möglichkeit besteht darin, dass Sie über eine Schnittstelle verfügen, die das Server-Kommunikationsprotokoll darstellt, und dann in Ihrem Haupt-Plugin einen Erweiterungspunkt definieren, der beitragende Implementierungen des Protokolls ermöglicht.So könnten Sie dann eine Sammlung von Instanzen einer Schnittstelle erstellen (nennen wir sie IMonitoringProtocol).Diese Schnittstelle würde die Methoden enthalten, die Sie benötigen, um den Status auf der Benutzeroberfläche anzuzeigen.

Zusätzlich hätten Sie eine XML-Konfigurationsdatei, die alle Server auflistet.Eines der Elemente in dieser Konfigurationsdatei ist das für die Überwachung zu verwendende Protokoll.

Wenn Sie also Ihre Anwendung starten, instanziieren Sie alle beigesteuerten Protokolle und lesen die Konfigurationsdatei.Anschließend können Sie das richtige Protokoll für die Kommunikation mit einem Server finden, indem Sie die Konfigurationseinträge abgleichen.

Dadurch können Sie in Zukunft neue Protokolle für Server hinzufügen, die noch nicht bekannt sind.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top