2013-03-11 32 views
2

저는 DDS와 IDL을 처음 사용하기 때문에 IDL에서 다음 모델을 작성하는 방법에 대한 조언을 누군가가 제공 할 수 있기를 바랍니다. DDS를위한 idl 모델 작성 방법

는 OO의 관점에서 모델을 기반으로, 그것은 그냥 빨리 예를위한 것입니다 : enter image description here

그리고 이것은 IDL 내 초기 데이터 모델이다 - 제대로입니까? IDL의 상속 및 종속성을 "모델링"하는 방법은 무엇입니까? O)

,

module test{ 
struct carpool{ 
    long id; //@key 
    string name; 
    sequence<car> cars; 
}; 

struct car{ 
    long id; //@key 
    string color; 
}; 
////the following inherits from car 
struct sedan{ 
    string extra_equipment; 
}; 

struct station_car{ 
    integer number_of_doors; 
}; 
}; 

이 단지는 예를 들어 상속의, 제대로하지 최선을 만든 ... 내가 찾은 사람 너무 단순 - 예 많은 온라인 매우 간단

이것이 맞습니까? 아니면 같은 모델을 만드는 더 좋은 방법이 있습니까? 누구든지 DDS 용 IDL로 작업 할 때 좋은 "HOWTO"에 대한 링크를 제공 할 수 있습니까? 참고 : RTI와 공동 작업 중입니다. DDS

+0

좋은 질문 - 내가 상속 트리의 정확한 의도를 좀 더 잘 이해하면 내가 응답 할 것이다. 당신의 모델에서 파생 된'Toyota'와'Mazda' 클래스의 목적은 명확하지 않습니다. 'model' 속성을'Car' 클래스로 옮기지 않으시겠습니까?그렇다면'Toyota'와'Mazda'는 더 이상 필요하지 않습니다 (데이터 배포의 관점에서). 아니면 완전한 데이터 모델을 보여주지 않았으며 다른 속성이나 클래스가 있습니까? –

+0

위의 코드는 상속의 * 예제 * 일 뿐이며 적절하지는 않습니다. 조금 편집 했으므로 이제는 더 이해할 수 있습니다. 전반적으로 나는 IDL에 대한 더 나은 이해와 OO 모델을 취하고이를 IDL로 "번역"하는 방법을 얻으려고 노력하고 있습니다. 저는 실제 모델이 없습니다. 단지 DDS와 IDL에 대해 더 잘 이해하려고 노력하고 있습니다. – jacob

답변

2

.

먼저 전통적으로 DDS에서 지원되지 않았지만 이제는 Extensible and Dynamic Topic Types 사양에 따라 상속 메커니즘이 있습니다. 아래 스 니펫은이를 사용하는 방법을 보여줍니다. 그러나 실제로 상속 메커니즘이 필요한지 여부는 데이터를 사용하는 방법에 따라 다릅니다. 기본 클래스 car에 가입 할 계획입니까 아니면 파생 클래스 만 구독 할 계획입니까? 첫 번째 경우에는 진정한 상속이 필요합니다. 두 번째 경우에는 파생 된 모든 자동차에 자동차 기본 구조를 포함시켜 상속을 모델링 할 수 있습니다.

carpoolcar 클래스 사이에 일대 다 관계가 있습니다. 일반적으로 시퀀스를 사용하는 것이 최선의 방법은 아닙니다. carpool에 단일 차량을 추가한다고 가정하면 전체 차량이 포함 된 전체 carpool 구조가 다시 게시되어야합니다. 이것은 원하는 것일 수도 있지만 일반적으로 car 클래스의 "외래 키"를 사용하여 속한 carpool을 참조하는 것이 좋습니다. 이는 일반 데이터베이스 디자인의 경우와 매우 유사합니다. 이 접근 방식을 통해 응용 프로그램은 carpoolId 속성을 통해 자동차와 관련하여 전체 카풀을 다시 구성해야합니다. carpool에 대한 업데이트는 car 구조를 통해 이루어집니다. 이 경우 car에 속한 carpool을 인식해야합니다.

가능한 예를 조각 :

module test { 

    struct carpool { 
    long id; //@key 
    string name; 
    }; 

    struct car { 
    long id; //@key 
    long carpoolId; // refers to carpool this car belongs to 
    string color; 
    }; 

    struct sedan : car { 
    string extra_equipment; 
    }; 

    struct station_car : car { 
    integer number_of_doors; 
    }; 
}; 
0

새로운 DDS Extensible Type 사양은 IDL의 구조 상속을 지원합니다. RTI Connext DDS 버전 5.0.0 이상을 사용하는 경우 이미이 기능을 이용할 수 있습니다.

구문은 다음과 같습니다 등등

struct car { 
    long id; //@key 
    string color; 
}; 

struct sedan : car { 
    string extra_equipment; 
}; 

struct station_car : car { 
    integer number_of_doors; 
}; 

그리고 ...

제라르을

약간의 관심을받을 자격이 당신의 IDL의 두 가지 측면이있다