Pregunta

Estoy interesado en aprender sobre Eclipse RCP, tengo algunos conocimientos básicos, pero quería saber más de lo que es capaz. Así que me animé a crear un conjunto de requisitos, analizarlos y llegar a decisiones de diseño sobre cómo cumplirlos utilizando Eclipse RCP como marco base, y eventualmente implementarlos con Eclipse RCP. Ahora, tal vez los requisitos son demasiado difíciles o simplemente no entiendo mucho sobre Eclipse RCP, ¡estoy luchando por encontrar soluciones adecuadas para cumplir con los requisitos!

El siguiente es el resumen de los requisitos (disculpe la probable falta de detalles, esto es realmente solo un ejemplo para alentarme):

Quería tener una aplicación Eclipse RCP para monitorear algunos servidores. Inicialmente, estos servidores serán programas que la aplicación conoce (lo que significa que sabe exactamente sobre sus entradas y salidas). Sin embargo, en el futuro, la aplicación debería permitir a los usuarios especificar programas arbitrarios con diferentes características para que la aplicación también los supervise (por lo tanto, no solo los servidores conocidos, sino también algunos otros servidores que antes no conocía). La aplicación también requerirá un archivo de configuración XML que contenga todos los detalles de los servidores que necesitan ser monitoreados (por ejemplo, host, puerto, nombre de usuario y contraseña). Este archivo de configuración XML se codificará y decodificará utilizando JAXB.

Entonces, en base a los requisitos anteriores, se me han ocurrido los siguientes detalles:

El XML se verá así:

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

Dónde y qué servidores conoce la aplicación.

En el código fuente, existe la siguiente jerarquía de clases:

Componente < --- Servidor < --- ServidorA, ServidorB

El Servidor A y el Servidor B descienden del Servidor y se asignan a un elemento respectivamente.

La entrada de punto para la configuración está en la clase llamada Configuración que contiene una lista de ServerA y una lista de ServerB. Ahora, debido a que la aplicación debería poder monitorear otros programas que no conocía, el archivo de configuración XML también debería ser extensible, por lo que la clase de configuración también contiene una lista de objetos que se asigna a cualquier otro componente especificado por el usuario en el archivo de configuración.

Configuration.java

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

   @XmlElement
    private List<ServerB> serverbs;

   @XmlAnyElement
    private List<Object> otherServers;
}

Ahora, ¿es esto algo que ustedes también harán para abordar los problemas? Supongo, no lo sé, solo estoy confundido sobre el requisito de que la aplicación pueda monitorear otros programas especificados por el usuario. Sé que lo configuré en primer lugar, pero lo hice teniendo en cuenta que & "; Esto parece algo que puede utilizar los puntos de extensión de Eclipse RCP &"; Pero ahora que saltó al archivo de configuración , No tengo claro cómo debería relacionarse el archivo de configuración con plugin.xml?

En el fondo de mi mente, quería que el archivo de configuración especificara los detalles (host, puerto, nombre de usuario y contraseña) de los programas que la aplicación necesita monitorear. Plugin.xml se usa para especificar los puntos de extensión y extensiones para programas definidos por el usuario que la aplicación también necesita monitorear. Entonces, ¿esto significa que, al final, para los programas definidos por el usuario, los usuarios deben configurarlos como extensiones en plugin.xml y luego especificar sus otros detalles en el archivo de configuración?

¿Fue útil?

Solución

Hay varias formas de abordar este problema. Pero déjame intentarlo.

Tiene un montón de servidores diferentes, con diferentes características de monitoreo. Pero para su aplicación eclipse, todos deben tener un aspecto similar.

Digamos que tiene una aplicación Eclipse RCP que contiene alguna IU para monitorear un servidor. Para esta aplicación, no debería importar cuáles son realmente los servidores, pero debe haber una interfaz común para conectarse a ellos.

Una posibilidad es que tenga una interfaz que represente el protocolo de comunicación del servidor y luego defina un punto de extensión en su complemento principal que permita implementaciones contribuyentes del protocolo. Entonces podrá crear una colección de instancias de alguna interfaz (vamos a llamarlo IMonitoringProtocol). Esta interfaz contendría los métodos que necesita para mostrar el estado en la interfaz de usuario.

Además, tendría un archivo de configuración XML que enumera todos los servidores. Uno de los elementos en este archivo de configuración es el protocolo a usar para el monitoreo.

Por lo tanto, cuando inicie su aplicación, creará una instancia de todos los protocolos contribuidos y leerá el archivo de configuración. Luego puede encontrar el protocolo adecuado para comunicarse con un servidor haciendo coincidir las entradas de configuración.

Esto le permite agregar nuevos protocolos en el futuro, para servidores que aún no se conocen.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top