假設我使用[RemoteClass]標籤爲具有序列化智能的自定義Flex類賦予優勢。版本控制如何與Flex遠程對象和AMF一起使用?
當我需要更改我的對象(添加一個新的字段,刪除一個字段,重命名一個字段等)會發生什麼?
有沒有一種優雅的方式處理這種設計模式?
假設我使用[RemoteClass]標籤爲具有序列化智能的自定義Flex類賦予優勢。版本控制如何與Flex遠程對象和AMF一起使用?
當我需要更改我的對象(添加一個新的字段,刪除一個字段,重命名一個字段等)會發生什麼?
有沒有一種優雅的方式處理這種設計模式?
添加或刪除一般工作。
您將在跟蹤中發現有關屬性的運行時警告,這些屬性可能丟失或找不到,但傳輸並有地方可用的任何數據仍將到達那裏。開發時需要記住這一點,因爲並非所有的字段都可能有有效的數據。
更改類型不能很好地工作,並且通常會導致運行時異常。
我喜歡使用顯式數據傳輸對象,而不是堅持我在整個應用程序中使用的實際數據模型。然後,您從DTO-> Model的翻譯可以考慮版本差異。
最好的辦法是對你的後端類進行代碼生成,以生成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項目。