0

我有一个包含大约 20 个模型和控制器的应用程序,并且没有使用任何特定的框架。在 Flex 性能方面使用多个远程对象的最佳实践是什么?

1) 方法 1 -每个组件一个 - 每个组件为自己实例化一个 RemoteObject

2) 方法 2 - 应用程序根中的多个- 每个控制器由根中的 RemoteObject 处理

3) 方法 3 - 应用程序根目录中的一个- 将所有控制器合并到一个类中,并使用一个 RemoteObject 处理它们

我猜 3 会有最好的性能,但会太乱而无法维护,而 1 会是最干净的,但会影响性能。你怎么看?

4

3 回答 3

3

最佳做法是“以上都不是”。你的视图应该调度控制器或命令组件用来调用你的服务的事件,然后在数据返回时更新你的模型。您的视图将绑定到数据,然后视图将自动更新为新数据。

我的偏好是为我要检索的不同数据或类型的数据设置一个服务类——这使得构建模拟服务变得更容易,这些模拟服务可以根据你正在做的事情根据需要交换为真实服务(例如,如果你有一个复杂的服务器设置,一个开发皮肤的开发人员会使用模拟)。但实际上,如何做到这一点是个人喜好问题。

那么,您的服务位于何处,以便控制器或命令可以访问它们?如果您使用依赖注入框架,例如 Robotlegs 或 Swiz,它将有一个单独的对象来处理模型和服务对象的实例化、存储和返回实例(在 Robotlegs 的情况下,它还将为您创建命令对象并且可以创建称为中介者的视图管理对象)。如果您不使用这些框架之一,则需要“自行开发”,如果您不具备架构意识,这可能会有点困难。

不知道如何滚动自己的人(例如编写旧版本 Cairngorm 的人)倾向于依赖的一件事是 Singletons。在当今时代,这些都不是好的实践,特别是如果您对单元测试您的工作完全感兴趣。http://misko.hevery.com/code-reviewers-guide/flaw-brittle-global-state-singletons/

于 2011-10-03T12:23:15.507 回答
1

很大程度上取决于您拥有多少数据,从服务器刷新多少次,以及您必须支持更新和查询。

第 3 号(和第 2 号)基本上是单例 - 这往往最适合大型应用程序和大型数据集。是的,维护自己会很复杂,但这就是人们倾向于使用框架(puremvc、cairgorm 等)的原因。大部分复杂性都是为您处理的。在框架内缓存数据还可以提高性能和响应时间。

1 的问题是,如果您必须协调每个组件的数据更新,您基本上需要编写一个无状态 UI,始终从服务器检索每个组件可见性的数据。

编辑:我正在使用 cairgorm - 有大约 30 个域模型(大约 200 个远程调用)并且还使用视图模型。我的一些模型(远程对象)有数十万个对象实例(记录),我保留了一个带有/写回的缓存。所有的复杂性都封装在控制器/命令中。性能是可以接受的。

于 2011-10-03T04:26:34.933 回答
1

就纯粹的性能而言,这三者的性能应该大致相同。当然,通过拥有更多 RemoteObject 实例,您将使用更多的内存,并且随着您使用给定 RemoteObject 实例向服务器发出的第一个请求(AMF 协议的一部分)发送几个额外的字节)。但是,这些东西的影响可以忽略不计。因此,Amy 是正确的,您应该根据可维护性而不是性能做出选择。

于 2011-10-03T15:55:04.983 回答