我正在编写一个在客户端使用MVC的Flex应用程序。它使用GraniteDS,因此具有远程延迟加载和反向延迟加载功能。
用户登录应用程序,然后单击按钮以更新其电子邮件地址。然后调用控制器,但我不确定接下来要做什么命令。我可以看到以下选项:
选项
选项2似乎更好但我不确定如何实现它。我有什么选择?
解决方案
解决方案2似乎是一种非常糟糕的方法,因为它绕过了Lazy / Reverse Lazy加载的GraniteDS功能。
这是他们最好的做法吗?
答案 0 :(得分:0)
如果在保存flex对象时遇到数据冲突,重新加载整个flex应用程序是一个不太方便的解决方案,但它的工作原理非常可靠。 对于请求:也许您应该只显示一条消息,并允许Flex客户端重新发送请求(例如:网络问题),并且它应该在大多数情况下都可以。添加一个计数器,如果在n失败后让您无法重启应用程序(您可以使用URLRequest对Flex应用程序进行编程以重新加载)。
关于克隆MyUser:如果你使用基本的AMF序列化与ObjectUtil.copy(),它将复制嵌套字段,因为它确实是基于IExternalizable的“深层复制”,花岗岩序列化是基于此。所以关于克隆对象的解决方案应该可行。
你可以按照你想要的方式自由使用granits,例如,许多人更喜欢禁用懒惰功能,即使它带来了自己的问题。我觉得处理数据冲突总是一件习惯的事情,不要指望一个框架,甚至是Granite,来解决所有问题。