需要对MVC的Model侧进行一些澄清

时间:2011-07-23 23:32:27

标签: flex actionscript-3 model-view-controller dto robotlegs

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

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

  2. 我看到人们不愿意为VO类添加复杂的关系,即如果用户有很多照片,那么UserVO类中显然会省略照片集。相反,根据具有用户ID的服务调用,在必要时从服务器加载一堆PhotoVO对象。这是一种经验法则 - 通常将VO视为“裸露”吗?这是否会增加必须对服务器进行的调用以获取所有数据?而且,这一般不会破坏域模型吗​​? (服务器上的实体用户类将始终具有照片属性)

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

1 个答案:

答案 0 :(得分:2)

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

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

  

我看到人们不愿意添加复杂的关系   VO课程,

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

  

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

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

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