2009-03-18 6 views
2

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

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

Я хотел бы иметь приложение 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> 

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

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

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

ServerA и ServerB спускаются с сервера и карту на элемент и, соответственно, ,

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

ответ

1

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

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

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

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

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

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

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