版本控制如何与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; 
    } 
} 

查看用于Java - > AS3代码生成的Granite Data Services项目。

http://www.graniteds.org