2009-03-18 12 views
2

Je suis intéressé par l'Eclipse RCP, j'ai quelques connaissances de base, mais je voulais savoir de quoi il est capable. J'ai donc encouragé mon moi à créer un ensemble d'exigences, à les analyser et à prendre des décisions de conception sur la façon dont elles peuvent être satisfaites en utilisant Eclipse RCP comme framework de base, et éventuellement les implémenter avec Eclipse RCP. Maintenant, peut-être que les exigences sont trop dures ou que je ne comprends pas encore très bien Eclipse RCP, j'ai du mal à trouver des solutions appropriées pour répondre aux exigences!Étude de cas Eclipse RCP

Ce qui suit est le résumé des exigences (s'il vous plaît excuser l'absence probable de détails, ce qui est vraiment juste quelques exemples pour me encourager):

Je voulais avoir 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 tenants et aboutissants). À l'avenir, cependant, l'application devrait être en mesure de permettre aux utilisateurs de spécifier des programmes arbitraires avec des caractéristiques différentes pour l'application à surveiller (donc pas seulement les serveurs connus, mais aussi d'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 devant être surveillés (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.

Ainsi, en fonction des exigences ci-dessus, je suis venu avec les détails suivants:

Le 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 sont des serveurs que l'application connaît.

Dans le code source, il y a la hiérarchie des classes suivantes:

Composant < --- --- Serveur < ServerA, ServerB

ServerA et ServerB descendent du serveur et map respectivement et l'élément .

L'entrée de point pour la configuration est dans la classe appelée Configuration qui contient une liste de ServerA et une liste de ServerB. Maintenant, parce que l'application devrait être capable de surveiller d'autres programmes qu'elle ne connaissait pas, le fichier de configuration XML devrait être également extensible, donc la classe Configuration contient également une liste d'objets qui correspond à tout autre composant spécifié par l'utilisateur dans le 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 les gars fera aussi bien d'aborder les problèmes? Je suppose, je ne sais pas, je suis juste confus au sujet de l'exigence pour l'application d'être en mesure de surveiller d'autres programmes spécifiés par l'utilisateur. Je sais que je l'ai mis en place en premier lieu, mais je l'ai fait en pensant que "cela ressemble à quelque chose qui peut utiliser les points d'extension Eclipse RCP", mais maintenant avoir sauté dans le fichier de configuration, je ne sais pas comment le fichier de configuration se rapporte au plugin.xml? Dans le fond de mon 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 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?

Répondre

1

Il existe plusieurs façons d'aborder ce problème. Mais laissez-moi essayer.

Vous avez plusieurs serveurs différents, avec différentes caractéristiques de surveillance. Mais pour votre application éclipse, ils doivent tous ressembler. Supposons que vous ayez une application Eclipse RCP qui contient une interface utilisateur pour surveiller un serveur. Pour cette application, peu importe ce que sont réellement les serveurs, mais il devrait y avoir une interface commune pour s'y connecter.

Une possibilité est que vous ayez une interface qui représente le protocole de communication du serveur et que vous définissiez ensuite un point d'extension dans votre plugin principal permettant de contribuer aux implémentations du protocole. Donc vous seriez alors capable de créer une collection d'instances d'une interface (Appelons-la IMonitoringProtocol). Cette interface contient les méthodes dont vous avez besoin pour afficher l'état sur l'interface utilisateur.

De plus, vous auriez un fichier de configuration XML qui répertorie 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 devez instancier tous les protocoles contribués et lire le fichier de configuration. Vous pouvez alors trouver le bon protocole pour communiquer avec un serveur en faisant correspondre les entrées de configuration.

Ceci vous permet d'ajouter de nouveaux protocoles dans le futur, pour les serveurs qui ne sont pas encore connus.

Questions connexes