【问题标题】:How does versioning work with Flex remote objects and AMF?版本控制如何与 Flex 远程对象和 AMF 一起使用?
【发布时间】:2010-09-12 12:36:07
【问题描述】:

假设我使用 [RemoteClass] 标签赋予自定义 Flex 类以序列化智能。

当我需要更改对象(添加新字段、删除字段、重命名字段等)时会发生什么?

是否有一种设计模式可以优雅地处理这个问题?

【问题讨论】:

    标签: apache-flex class version amf


    【解决方案1】:

    最好的办法是针对后端类进行代码生成,为它们生成对应的 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 的 Granite Data Services 项目 -> AS3 代码生成。

    http://www.graniteds.org

    【讨论】:

      【解决方案2】:

      添加或删除通常有效。

      您将在跟踪中收到有关属性丢失或未找到的运行时警告,但任何已传输且有位置可去的数据仍会到达那里。您在开发时需要牢记这一点,因为并非所有字段都可能包含有效数据。

      更改类型,效果不太好,而且经常会导致运行时异常。

      我喜欢使用显式数据传输对象,而不是保留在整个应用程序中使用的实际数据模型。然后你从 DTO->Model 的翻译可以考虑版本差异。

      【讨论】:

        猜你喜欢
        • 2017-08-20
        • 2020-02-24
        • 1970-01-01
        • 2016-07-29
        • 2013-08-30
        • 2011-03-31
        • 2017-03-22
        • 1970-01-01
        • 2017-04-07
        相关资源
        最近更新 更多