Flex 원격 객체 및 AMF의 버전 관리는 어떻게 작동합니까?


1

[RemoteClass] 태그를 사용하여 직렬화 인텔리전스가있는 사용자 정의 Flex 클래스를 부여한다고 가정합니다.

개체를 변경 (새 필드 추가, 필드 제거, 필드 이름 변경 등)해야 할 때 어떻게됩니까?

우아한 방식으로 처리하기위한 디자인 패턴이 있습니까?

1

일반적으로 추가 또는 제거가 가능합니다.

누락되었거나 찾을 수없는 속성에 대한 추적에서 런타임 경고가 표시되지만 전송되고 이동 할 수있는 모든 데이터는 계속 표시됩니다. 모든 필드에 유효한 데이터가있는 것은 아니므로이를 개발할 때이를 명심해야합니다.

유형을 변경하면 작동하지 않으므로 런타임 예외가 발생할 수 있습니다.

저는 명시적인 데이터 전송 객체를 사용하고 앱 전체에서 사용되는 실제 데이터 모델을 유지하지 않습니다. 그런 다음 DTO -> Model에서 번역하면 버전 차이를 고려할 수 있습니다.


3

가장 좋은 방법은 백엔드 클래스에 대한 코드 생성을위한 코드 생성을 수행하는 것입니다. 모든 개체 속성을 가진 기본 클래스를 생성 한 다음 수정되지 않은 하위 클래스를 만드는 경우에도 변경되는 클래스 부분 만 다시 생성하면서 사용자 지정 코드를 추가 할 수 있습니다. 예 :

java: 
public class User { 
    public Long id; 
    public String firstName; 
    public String lastName; 
} 

as3: 
public class UserBase { 
    public var id : Number; 
    public var firstName : String; 
    public var lastName : String; 
} 

[Bindable] [RemoteClass(...)] 
public class User extends UserBase { 
    public function getFullName() : String { 
    return firstName + " " + lastName; 
    } 
} 

자바 -> AS3 코드 생성 용 Granite Data Services 프로젝트를 확인하십시오.

http://www.graniteds.org