Domanda

Sono interessato a conoscere Eclipse RCP, ho alcune conoscenze di base, ma volevo sapere di più di cosa è capace. Quindi ho incoraggiato me stesso a creare una serie di requisiti, analizzarli e prendere decisioni progettuali su come possono essere soddisfatti utilizzando Eclipse RCP come framework di base e infine implementarli con Eclipse RCP. Ora, forse i requisiti sono troppo difficili o semplicemente non capisco ancora molto su Eclipse RCP, sto lottando per trovare soluzioni adeguate per soddisfare i requisiti!

Di seguito è riportato il riepilogo dei requisiti (si prega di scusare la probabile mancanza di dettagli, questo è davvero solo un esempio per incoraggiarmi):

Volevo avere un'applicazione Eclipse RCP per monitorare alcuni server. Questi server inizialmente saranno programmi di cui l'applicazione è a conoscenza (nel senso che conosce esattamente i loro dettagli). In futuro, tuttavia, l'applicazione dovrebbe essere in grado di consentire agli utenti di specificare programmi arbitrari con caratteristiche diverse per l'applicazione da monitorare (quindi non solo server noti, ma anche altri server che non conoscevano prima). L'applicazione richiederà anche un file di configurazione XML che contenga tutti i dettagli dei server che devono essere monitorati (ad es. Host, porta, nome utente e password). Questo file di configurazione XML verrà codificato e decodificato utilizzando JAXB.

Quindi, in base ai requisiti di cui sopra, ho escogitato i seguenti dettagli:

L'XML sarà simile a questo:

<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>

Dove e quali server sono a conoscenza dell'applicazione.

Nel codice sorgente è presente la seguente gerarchia di classi:

Componente < --- Server < --- ServerA, ServerB

ServerA e ServerB discendono dal server e mappano rispettivamente e l'elemento.

La voce del punto per la configurazione è nella classe denominata Configurazione che contiene un elenco di ServerA e un elenco di ServerB. Ora, poiché l'applicazione dovrebbe essere in grado di monitorare altri programmi di cui non era a conoscenza, anche il file di configurazione XML dovrebbe essere estensibile, quindi la classe Configuration contiene anche un elenco di oggetti che si associa a qualsiasi altro componente specificato dall'utente nel file di configurazione.

Configuration.java

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

   @XmlElement
    private List<ServerB> serverbs;

   @XmlAnyElement
    private List<Object> otherServers;
}

Ora, è qualcosa che farete anche voi ragazzi per affrontare i problemi? Immagino, non lo so, sono solo confuso sul requisito per l'applicazione di poter monitorare altri programmi specificati dall'utente. So di averlo impostato in primo luogo, ma l'ho fatto pensando che & Quot; questo sembra qualcosa che può utilizzare i punti di estensione RCP di Eclipse & Quot ;, ma ora sono saltato nel file di configurazione , Non sono chiaro su come dovrebbe essere correlato il file di configurazione con plugin.xml?

Nella parte posteriore della mia mente, volevo che il file di configurazione specificasse i dettagli (host, porta, nome utente e password) dei programmi che l'applicazione deve monitorare. Plugin.xml viene utilizzato per specificare i punti di estensione e le estensioni per i programmi definiti dall'utente che l'applicazione deve anche monitorare. Quindi questo significa che alla fine, per i programmi definiti dall'utente, gli utenti devono configurarli come estensioni in plugin.xml e quindi specificare gli altri dettagli nel file di configurazione?

È stato utile?

Soluzione

Esistono diversi modi per affrontare questo problema. Ma lasciami fare un tentativo.

Hai un sacco di server diversi, con diverse caratteristiche di monitoraggio. Ma per la tua applicazione eclipse devono essere tutti simili.

Supponiamo che tu abbia un'applicazione Eclipse RCP che contiene alcune UI per monitorare un server. Per questa applicazione, non dovrebbe importare quali siano effettivamente i server, ma dovrebbe esserci un'interfaccia comune per connettersi ad essi.

Una possibilità è che tu abbia un'interfaccia che rappresenta il protocollo di comunicazione del server e quindi, definisci un punto di estensione nel tuo plug-in principale che consenta di implementare il protocollo in modo collaborativo. Quindi si sarebbe quindi in grado di creare una raccolta di istanze di alcune interfacce (chiamiamolo IMonitoringProtocol). Questa interfaccia conterrebbe i metodi necessari per visualizzare lo stato sull'interfaccia utente.

Inoltre avresti un file di configurazione XML che elenca tutti i server. Uno degli elementi di questo file di configurazione è il protocollo da utilizzare per il monitoraggio.

Quindi, quando avvii la tua applicazione, crei un'istanza di tutti i protocolli forniti e leggi il file di configurazione. È quindi possibile trovare il protocollo giusto per comunicare con un server abbinando le voci di configurazione.

Ciò consente di aggiungere nuovi protocolli in futuro, per server che non sono ancora noti.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top