Eclipse RCP тематическое исследование - PullRequest
2 голосов
/ 18 марта 2009

Мне интересно узнать об Eclipse RCP, у меня есть некоторые базовые знания, но я хотел узнать больше, на что он способен. Поэтому я призвал себя создать набор требований, проанализировать их и придумать проектные решения о том, как их можно удовлетворить, используя Eclipse RCP в качестве базовой платформы, и в конечном итоге реализовать их с Eclipse RCP. Теперь, может быть, требования слишком жесткие, или я просто еще не очень разбираюсь в Eclipse RCP, я изо всех сил пытаюсь найти правильные решения для удовлетворения требований!

Ниже приводится краткое изложение требований (прошу прощения за возможное отсутствие подробностей, на самом деле это просто пример для поднятия себя):

Я хотел иметь приложение Eclipse RCP для мониторинга некоторых серверов. Эти серверы первоначально будут программами, о которых приложение знает (то есть оно точно знает их входы и выходы). Однако в будущем приложение должно иметь возможность разрешать пользователям указывать произвольные программы с различными характеристиками для мониторинга приложения (например, не только известные серверы, но и некоторые другие серверы, о которых оно раньше не знало). Приложению также потребуется файл конфигурации XML, который содержит все подробности о серверах, которые необходимо отслеживать (например, хост, порт, имя пользователя и пароль). Этот XML-файл конфигурации будет закодирован и декодирован с использованием JAXB.

Итак, исходя из вышеизложенных требований, я придумал следующие детали:

XML будет выглядеть примерно так:

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

Где и где находятся серверы, о которых приложение знает.

В исходном коде есть следующая иерархия классов:

Компонент <--- Сервер <--- Сервер A, Сервер B </p>

Сервер A и Сервер B спускаются с Сервера и сопоставляются с элементом соответственно.

Запись точки для конфигурации находится в классе, называемом Configuration, который содержит список ServerA и список ServerB. Теперь, поскольку приложение должно иметь возможность отслеживать другие программы, о которых оно не знает, файл конфигурации XML также должен быть расширяемым, поэтому класс Configuration также содержит список Object, который отображается на любой другой компонент, указанный пользователем в файл конфигурации.

Configuration.java

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

   @XmlElement
    private List<ServerB> serverbs;

   @XmlAnyElement
    private List<Object> otherServers;
}

Теперь, вы, ребята, тоже сделаете это, чтобы решить проблемы? Я думаю, я не знаю, я просто смущен требованием, чтобы приложение могло контролировать другие программы, указанные пользователем. Я знаю, что я настроил это в первую очередь, но я сделал это, имея в виду, говоря, что «это похоже на то, что может использовать точки расширения Eclipse RCP», но теперь, перейдя в файл конфигурации, мне не ясно, как следует файл конфигурации относится к plugin.xml?

В глубине души я хотел, чтобы в файле конфигурации указывались детали (хост, порт, имя пользователя и пароль) программ, которые приложение должно отслеживать. Файл plugin.xml используется для указания точек расширения и расширений для пользовательских программ, которые приложение также должно отслеживать. Значит ли это, что, в конце концов, для пользовательских программ пользователям необходимо настроить их как расширения в plugin.xml, а затем указать другие данные в файле конфигурации?

1 Ответ

1 голос
/ 18 марта 2009

Существует несколько способов решения этой проблемы. Но позвольте мне дать ему шанс.

У вас есть несколько разных серверов с разными характеристиками мониторинга. Но для вашего приложения Eclipse все они должны выглядеть одинаково.

Допустим, у вас есть приложение Eclipse RCP, содержащее некоторый пользовательский интерфейс для мониторинга сервера. Для этого приложения не должно иметь значения, какие на самом деле серверы, но должен быть общий интерфейс для подключения к ним.

Одна возможность состоит в том, что у вас есть интерфейс, представляющий протокол связи с сервером, а затем вы определяете точку расширения в своем основном плагине, которая позволяет вносить реализации протокола. Таким образом, вы сможете создать коллекцию экземпляров некоторого интерфейса (назовем его IMonitoringProtocol). Этот интерфейс будет содержать методы, необходимые для отображения статуса в пользовательском интерфейсе.

Кроме того, у вас будет файл конфигурации XML, в котором перечислены все серверы. Одним из элементов этого файла конфигурации является протокол, используемый для мониторинга.

Итак, когда вы запускаете свое приложение, вы создаете экземпляры всех предоставленных протоколов и читаете файл конфигурации. Затем вы можете найти правильный протокол для связи с сервером, сопоставив записи конфигурации.

Это позволяет добавлять новые протоколы в будущем для серверов, которые еще не известны.

...