2008-09-23 45 views
1

假設我使用[RemoteClass]標籤爲具有序列化智能的自定義Flex類賦予優勢。版本控制如何與Flex遠程對象和AMF一起使用?

當我需要更改我的對象(添加一個新的字段,刪除一個字段,重命名一個字段等)會發生什麼?

有沒有一種優雅的方式處理這種設計模式?

回答

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