2

我有兴趣了解 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

ServerA 和 ServerB 从 Server 下降并分别映射到和元素。

配置的点条目位于名为 Configuration 的类中,该类包含一个 ServerA 列表和一个 ServerB 列表。现在,因为应用程序应该能够监视它不知道的其他程序,所以 XML 配置文件也应该是可扩展的,所以 Configuration 类还包含一个 Object 列表,该列表映射到用户在配置文件。

配置.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中将它们配置为扩展,然后在配置文件中指定它们的其他细节?

4

1 回答 1

1

有几种方法可以解决这个问题。但让我试一试。

你有一堆不同的服务器,具有不同的监控特性。但是对于您的 Eclipse 应用程序,它们都必须看起来相似。

假设您有一个 Eclipse RCP 应用程序,其中包含一些用于监视服务器的 UI。对于这个应用程序,服务器实际上是什么并不重要,但应该有一个通用接口来连接它们。

一种可能性是您有一个代表服务器通信协议的接口,然后,您在主插件中定义一个扩展点,允许对该协议的贡献实现。因此,您将能够创建某个接口的实例集合(我们称之为 IMonitoringProtocol)。此界面将包含您在 UI 上显示状态所需的方法。

此外,您将拥有一个列出所有服务器的 XML 配置文件。此配置文件中的元素之一是用于监控的协议。

So, when you launch your application, you would instantiate all the contributed protocols, and read the configuration file. You can then find the right protocol to communicate to a server by matching the configuration entries.

This allows you to add new protocols in the future, for servers that are not known yet.

于 2009-03-18T10:31:41.763 回答