我想我需要在某些与模型相关的概念上进行一些非常好的解释。

  1. 通常,如Robotlegs这样的框架所描述的那样,该模型是否扮演应用程序状态持有人或域状态持有人的角色?我最初认为模型完全基于域,即UserModel,LocationModel,它们扮演了DAO类在服务器上扮演的角色相同。不过,我要看的源代码越多,我看到的东西越多,诸如UserAccountModel,ShoppingCartModel等,充满了与客户端应用程序状态相关的属性和方法,而不是域状态。

  2. 我看到人们不会费心在VO类中添加复杂的关系,即如果用户有很多照片,则显然会从Uservo类中省略照片集。取而代之的是,根据用户ID的服务调用,随时从服务器加载了一堆光伏对象。这是某种经验法则吗?总的来说,将VOS保持为“裸露”?这是否会增加必须对服务器进行所有数据的可能呼叫数量?而且,这通常不是域模型吗? (服务器上的实体用户类将始终拥有照片属性)

  3. 对于服务器的呼叫如此多,通常可以获取可能已经在客户端存储上的某些对象。制作客户端缓存是很有意义的吗?检查要获取的对象是否已经存在,或者通常,获得它的开销将通过获得完全同步的对象的好处而得到回报从服务器。否则,在发生更改时,必须关心存储在客户端缓存上的每个对象。我个人认为,从服务器中获取对象的开销(可能已经被捡起的对象都不那么大。我会说最好有新的和同步的数据。

有帮助吗?

解决方案

我不认为您的问题是有回答的,因为许多答案是“取决于”。这取决于您正在构建的应用程序和UI的需求。

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

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

我不确定您在哪里看到;我经常会做到这一点。但是,这取决于应该显示的视图。如果视图没有显示与用户相关的大量照片,那么我将不会进行远程调用以用他们的所有照片检索用户信息。

对于服务器的呼叫如此多,通常可以获取可能已经在客户端存储上的某些对象。

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

我将重申我的原始评估:我认为您大多数问题的答案取决于情况,并取决于应用程序。您似乎从过分广泛地概括了事情。但是,我不认为它们是普遍的真理。开发人员一直对应用程序架构进行斗争。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top