Вопрос

Мне интересно узнать о 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>

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

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

Компонент <--- Сервер <--- Сервер, ServerB

ServerA и ServerB происходят от Server и сопоставляются с и element соответственно.

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

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, а затем указать другие их детали в файле конфигурации?

Это было полезно?

Решение

Есть несколько способов подойти к этому вопросу.Но позвольте мне попробовать это сделать.

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top