3

我想我需要一些关于模型相关概念的非常好的解释。

  1. 一般来说,如 Robotlegs 这样的框架所描述的模型是扮演应用程序状态持有者还是域状态持有者的角色?我最初认为模型是完全基于域的,即UserModel、LocationModel,它们的作用与DAO 类在服务器上的作用相同。不过,我查看的源代码越多,我看到的东西就越多,例如 UserAccountModel、ShoppingCartModel 等,其中充满了与客户端应用程序状态相关的属性和方法,而不是域状态。

  2. 我看到人们不会费心将复杂的关系添加到 VO 类中,即如果一个用户有很多照片,那么显然从 UserVO 类中省略了照片集合。相反,根据使用用户 ID 的服务调用,在必要时从服务器加载一堆 PhotoVO 对象。这是某种经验法则吗?一般来说,让 VO 尽可能“裸露”吗?这不会增加必须对服务器进行的调用以获取所有数据的可能数量吗?此外,这不是一般的域模型碎片吗?(服务器上的实体 User 类将始终具有 photos 属性)

  3. 由于对服务器的调用如此之多,获取一些可能已经在客户端存储上的对象是很正常的。进行客户端缓存是否有意义,并检查要获取的对象是否已经存在,或者一般来说,再次获取它的开销将通过获取完全同步的对象的好处得到回报从服务器。否则,当发生更改时,必须注意存储在客户端缓存中的每个对象。我个人认为从服务器获取对象的开销(之前可能已经获取)并没有那么大。我会说最好有新鲜和同步的数据。

4

1 回答 1

2

我不相信你的问题是可以回答的,因为很多答案都是“视情况而定”。这取决于您正在构建的应用程序和 UI 的需求。

我不太了解您在“域状态”和“应用程序状态”之间的区别。但是,我相信在 UI 中实现的任何“值对象”样式类都应该专注于保持特定视图的状态。单个视图与数据库表是一对一关系的情况极为罕见。因此,我的 UI 数据对象可能与服务器端数据对象不同。虽然,我将使用 AMF 将 UI 对象映射到服务器端对象是很常见的。但是,这并不意味着 UI 中的每个对象都在服务器端实现,并且每个服务器对象都在 UI 上实现。

我看到人们不会费心向 VO 类添加复杂的关系,

我不确定你在哪里看到的;我经常会这样做。但是,这取决于视图应该显示的内容。如果视图没有显示很多与用户相关的照片,那么我不会进行远程调用来检索用户信息及其所有照片。

由于对服务器的调用如此之多,获取一些可能已经在客户端存储上的对象是很正常的。

这取决于。我会说我编写的应用程序,对服务器的调用是根据需要完成的;并试图酌情限制它们。如果我已经获取数据并将其缓存在客户端上,那么我将尝试使用该缓存而不是再次检索数据。

我将重申我最初的评估:我认为您的大多数问题的答案取决于具体情况,并取决于应用程序。您似乎从关于如何完成事情的总体概括开始。但是,我不相信它们是普遍真理。开发人员一直在为应用程序架构问题而斗争。

于 2011-07-24T00:34:33.877 回答