Как работает управление версиями с удаленными объектами Flex и AMF?


1

Предположим, что я использую тэг [RemoteClass], чтобы наделить пользовательский класс Flex классом сериализации.

Что происходит, когда мне нужно изменить свой объект (добавить новое поле, удалить поле, переименовать поле и т. Д.)?

Есть ли шаблон дизайна для обработки этого элегантным способом?

1

Добавление или удаление в целом работ.

Вы получите предупреждения о запуске в своей трассе о свойствах, которые отсутствуют или не найдены, но любые данные, которые переданы и имеют место для работы, по-прежнему будут доступны. Вы должны помнить об этом во время разработки, поскольку не все ваши поля могут иметь достоверные данные.

Изменение типов, не работает так хорошо и часто приводит к исключениям времени выполнения.

Мне нравится использовать явные объекты передачи данных и не сохранять мою фактическую модель данных, которая используется во всем приложении. Тогда ваш перевод с DTO-> Model может учитывать различия версий.


3

Ваш лучший выбор - создать код для ваших базовых классов для генерации для них ActionScript. Если вы создаете базовый класс со всеми вашими свойствами объекта и затем создаете подкласс для него, который никогда не будет изменен, вы все равно можете добавить собственный код при регенерации только тех частей вашего класса, которые меняются. Пример:

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; 
    } 
} 

Ознакомиться с проектом Granite Data Services для Java -> генерации кода AS3.

http://www.graniteds.org