2009-03-18 7 views
2

이클립스 RCP에 대해 배우고 싶습니다. 몇 가지 기본 지식이 있습니다 만, 그게 가능한지 더 알고 싶었습니다. 따라서 필자는 일련의 요구 사항을 작성하여 분석하고 Eclipse RCP를 기본 프레임 워크로 사용하여 Eclipse RCP를 통해 구현할 수있는 방법에 대한 설계 결정을 내릴 것을 권장했습니다. 이제 요구 사항이 너무 어렵거나 Eclipse RCP에 대해 아직 이해하지 못하고 있습니다. 요구 사항을 충족시키기 위해 적절한 솔루션을 고안하기 위해 애 쓰고 있습니다.Eclipse RCP 사례 연구

내가 일부 서버를 모니터링 할 수있는 이클립스 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가, 서버 B

ServerA가 및 서버 B는 서버에서 내려 각각에와 요소를 매핑 .

구성에 대한 포인트 항목은 ServerA 목록과 ServerB 목록이 포함 된 Configuration이라는 클래스에 있습니다. 이제는 응용 프로그램이 모르는 다른 프로그램을 모니터링 할 수 있어야하므로 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

이 문제를 해결하는 방법에는 여러 가지가 있습니다. 그러나 나는 그것에 총을 줘 보자.

모니터링 특성이 다른 여러 서버가 있습니다. 그러나 당신의 식 애플 리케이션을 위해 그들은 모두 비슷하게 보일 것입니다.

서버를 모니터링하는 UI가 포함 된 Eclipse RCP 애플리케이션이 있다고 가정 해 보겠습니다. 이 응용 프로그램의 경우 서버가 실제로 무엇인지는 중요하지 않지만 연결하기위한 공통 인터페이스가 있어야합니다.

하나의 가능성은 서버 통신 프로토콜을 나타내는 인터페이스가 있고 그 다음에는 프로토콜 구현에 기여할 수있는 확장 포인트를 메인 플러그인에 정의한다는 것입니다. 그래서 당신은 어떤 인터페이스 (IMonitoringProtocol이라 부름) 인스턴스의 콜렉션을 생성 할 수 있습니다. 이 인터페이스는 UI에 상태를 표시하는 데 필요한 메소드를 포함합니다.

또한 모든 서버를 나열하는 XML 구성 파일이 있어야합니다. 이 구성 파일의 요소 중 하나는 모니터링에 사용할 프로토콜입니다.

따라서 응용 프로그램을 시작할 때 모든 제공 프로토콜을 인스턴스화하고 구성 파일을 읽습니다. 그런 다음 구성 항목을 일치시켜 서버와 통신 할 수있는 올바른 프로토콜을 찾을 수 있습니다.

아직 알려지지 않은 서버에 대해 향후 새 프로토콜을 추가 할 수 있습니다.