2009-03-18 11 views
2

Ich interessiere mich für Eclipse RCP, ich habe ein paar Grundkenntnisse, aber ich wollte mehr wissen, was es kann. Also ermutigte ich mich selbst, eine Reihe von Anforderungen zu erstellen, sie zu analysieren und Designentscheidungen darüber zu treffen, wie sie mit Eclipse RCP als Basis-Framework erfüllt werden können, und sie schließlich mit Eclipse RCP zu implementieren. Nun, vielleicht sind die Anforderungen zu schwer oder ich verstehe Eclipse RCP noch nicht sehr gut, ich habe Mühe, geeignete Lösungen zu finden, um die Anforderungen zu erfüllen!Eclipse RCP Fallstudie

Das Folgende ist die Zusammenfassung der Anforderungen (bitte die wahrscheinliche Mangel an Details entschuldigen, das ist wirklich nur einige Beispiel selbst zu fördern):

ich eine Eclipse RCP-Anwendung haben wollten einige Server zu überwachen. Diese Server werden anfänglich Programme sein, von denen die Anwendung weiß (dh sie weiß genau, wie sie funktionieren). In der Zukunft sollte die Anwendung jedoch in der Lage sein, Benutzern zu ermöglichen, beliebige Programme mit verschiedenen Eigenschaften zu spezifizieren, die die Anwendung ebenfalls überwachen kann (also nicht nur bekannte Server, sondern auch einige andere Server, von denen sie vorher nichts wusste). Die Anwendung erfordert außerdem eine XML-Konfigurationsdatei, die alle Details der Server enthält, die überwacht werden müssen (z. B. Host, Port, Benutzername und Kennwort). Diese XML-Konfigurationsdatei wird mithilfe von JAXB codiert und decodiert.

auf den oben genannten Anforderungen So basiert, habe ich mit den folgenden Details kommen:

<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 die Anwendung kennt:

Die XML etwas wie folgt aussehen.

Im Quellcode, gibt es die folgende Hierarchie der Klassen:

Component < --- --- Server < ServerA, ServerB

ServerA und ServerB stammen von Server und Karte jeweils Element und .

Der Punkteintrag für die Konfiguration ist in der Klasse Konfiguration, die eine Liste von ServerA und eine Liste von ServerB enthält. Da die Anwendung in der Lage sein sollte, andere Programme zu überwachen, von denen sie nichts wusste, sollte die XML-Konfigurationsdatei ebenfalls erweiterbar sein. Daher enthält die Configuration-Klasse auch eine Liste von Object, die jeder anderen vom Benutzer angegebenen Komponente zugeordnet ist Konfigurationsdatei.

Configuration.java

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

    @XmlElement 
    private List<ServerB> serverbs; 

    @XmlAnyElement 
    private List<Object> otherServers; 
} 

Nun, dies ist etwas, das ihr auch tun, um die Probleme zu nähern? Ich denke, ich weiß nicht, ich bin nur verwirrt über die Anforderung für die Anwendung in der Lage sein, andere vom Benutzer angegebene Programme zu überwachen. Ich weiß, dass ich es an erster Stelle eingerichtet habe, aber ich habe es im Sinn gesagt: "Das sieht nach etwas aus, das die Erweiterungspunkte von Eclipse RCP nutzen kann", aber nachdem ich in die Konfigurationsdatei gesprungen bin, bin ich mir nicht sicher Die Konfigurationsdatei bezieht sich auf die plugin.xml?

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

Antwort

1

Es gibt mehrere Möglichkeiten, dieses Problem anzugehen. Aber lassen Sie mich 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 egal sein, was die Server tatsächlich sind, aber es sollte eine gemeinsame Schnittstelle geben, um sich mit ihnen zu verbinden.

Eine Möglichkeit besteht darin, dass Sie über eine Schnittstelle verfügen, die das Serverkommunikationsprotokoll darstellt, und dann einen Erweiterungspunkt in Ihrem Hauptplugin definieren, der Implementierungen des Protokolls ermöglicht. So wäre es dann möglich, eine Sammlung von Instanzen einer Schnittstelle zu erstellen (lasst es IMonitoringProtocol nennen). Diese Schnittstelle enthält die Methoden, die Sie zum Anzeigen des Status auf der Benutzeroberfläche benötigen.

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, würden Sie alle beigesteuerten Protokolle instanziieren und die Konfigurationsdatei lesen. Sie können dann das richtige Protokoll finden, um mit einem Server zu kommunizieren, indem Sie die Konfigurationseinträge abgleichen.

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

Verwandte Themen