Question

Je suis intéressé à en savoir plus sur Eclipse RCP. J'ai quelques connaissances de base, mais je voulais en savoir plus sur ce dont il est capable. J'ai donc encouragé moi-même à créer un ensemble d'exigences, à les analyser et à prendre des décisions de conception sur la manière dont elles peuvent être satisfaites en utilisant Eclipse RCP comme infrastructure de base, puis à les implémenter avec Eclipse RCP. Maintenant, peut-être que les exigences sont trop strictes ou que je ne comprends tout simplement pas à propos d’Eclipse RCP, j’ai du mal à trouver les solutions qui conviennent!

Ce qui suit est un résumé des exigences (veuillez excuser le manque probable de détails, ce n’est en fait qu’un exemple à encourager):

Je souhaitais disposer d’une application Eclipse RCP pour surveiller certains serveurs. Ces serveurs seront initialement des programmes connus de l’application (c’est-à-dire qu’ils connaissent exactement leurs entrées et sorties). Toutefois, à l'avenir, l'application devrait être en mesure de permettre aux utilisateurs de spécifier des programmes arbitraires avec des caractéristiques différentes que l'application doit également surveiller (donc non seulement les serveurs connus, mais également certains autres serveurs qu'elle ne connaissait pas auparavant). L’application nécessitera également un fichier de configuration XML contenant tous les détails des serveurs à surveiller (par exemple, hôte, port, nom d’utilisateur et mot de passe). Ce fichier de configuration XML sera codé et décodé à l'aide de JAXB.

Donc, sur la base des exigences ci-dessus, j'ai proposé les détails suivants:

Le code XML ressemblera à quelque chose comme ceci:

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

Où et quels sont les serveurs connus de l'application?

Dans le code source, il existe la hiérarchie de classes suivante:

Composant < --- Serveur < --- ServeurA, ServeurB

ServerA et ServerB descendent de Server et mappent vers et élément respectivement.

L'entrée de point pour la configuration se trouve dans la classe appelée Configuration qui contient une liste de ServerA et une liste de ServerB. Maintenant, étant donné que l’application devrait pouvoir surveiller d’autres programmes qu’elle ne connaissait pas, le fichier de configuration XML doit également être extensible. La classe Configuration contient également une liste d’Object qui mappe vers tout autre composant spécifié par l’utilisateur dans le répertoire. fichier de configuration.

Configuration.java

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

   @XmlElement
    private List<ServerB> serverbs;

   @XmlAnyElement
    private List<Object> otherServers;
}

Maintenant, est-ce quelque chose que vous ferez aussi bien pour aborder les problèmes? J'imagine que je ne sais pas si je suis confus quant à l'exigence selon laquelle l'application doit pouvoir surveiller d'autres programmes spécifiés par l'utilisateur. Je sais que je l'ai installé en premier lieu, mais je l'ai fait en pensant que & "Cela ressemble à quelque chose qui peut utiliser les points d'extension d'Eclipse RCP &" ;, mais j'ai maintenant sauté dans le fichier de configuration. , Je ne vois pas comment le fichier de configuration devrait se rapporter à plugin.xml?

Dans l’esprit, je voulais que le fichier de configuration spécifie les détails (hôte, port, nom d’utilisateur et mot de passe) des programmes que l’application doit surveiller. Le fichier plugin.xml est utilisé pour spécifier les points d'extension et les extensions pour les programmes définis par l'utilisateur que l'application doit également surveiller. Cela signifie-t-il qu'à la fin, pour les programmes définis par l'utilisateur, les utilisateurs doivent les configurer en tant qu'extensions dans plugin.xml, puis spécifier leurs autres détails dans le fichier de configuration?

Était-ce utile?

La solution

Il existe plusieurs façons d’aborder ce problème. Mais laissez-moi tenter le coup.

Vous avez un ensemble de serveurs différents, avec des caractéristiques de surveillance différentes. Mais pour votre application Eclipse, ils doivent tous se ressembler.

Supposons que votre application Eclipse RCP contient une interface utilisateur permettant de surveiller un serveur. Pour cette application, peu importe ce que sont réellement les serveurs, il devrait exister une interface commune pour se connecter à eux.

L’une des possibilités est que vous disposiez d’une interface représentant le protocole de communication du serveur, puis que vous définissiez un point d’extension dans votre plug-in principal permettant les implémentations contributives du protocole. Vous pourrez alors créer une collection d'instances de certaines interfaces (appelons-le IMonitoringProtocol). Cette interface contiendrait les méthodes nécessaires pour afficher le statut sur l'interface utilisateur.

En outre, vous disposez d'un fichier de configuration XML répertoriant tous les serveurs. L’un des éléments de ce fichier de configuration est le protocole à utiliser pour la surveillance.

Ainsi, lorsque vous lancez votre application, vous pouvez instancier tous les protocoles apportés et lire le fichier de configuration. Vous pouvez ensuite trouver le bon protocole pour communiquer avec un serveur en faisant correspondre les entrées de configuration.

Cela vous permet d'ajouter de nouveaux protocoles à l'avenir, pour des serveurs inconnus.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top