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?