在客户端MVC,谁应该处理客户端 - 服务器通信?

时间:2013-06-04 00:15:19

标签: web-services model-view-controller architecture

我正在研究客户端/服务器产品。基本上,服务器将文档传输到客户端进行编辑。客户端具有完整的MVC架构。该文件是模型。

现在的问题是:

  1. 模型中有一些计算需要服务器中的一些资源。
  2. 出于性能原因,模型的某些部分应该是延迟加载的。
  3. 一个例子是文档中的图像。它在打开文档时没有加载,但有一些东西加载图像,一旦加载它就会让文档知道,文档将重新计算布局。

    我的问题是通讯代码是模型还是控制器的一部分?或者它属于某些既不是模型也不是控制器的上下文?或者Context属于Model?

2 个答案:

答案 0 :(得分:1)

模型层应与数据源交互。如果客户端 - 服务器设置中有两个独立且独立的三元组,则客户端模型层的数据源将是服务器的表示层。

基本上,您的客户端模型层成为服务器端的user

答案 1 :(得分:0)

如果您能提供一些计算示例或文档对象模型,那就更好了。

让我们突破要求:

  1. 模型中有一些计算需要服务器中的一些资源。

    这种计算最好放在Model,因为它需要来自服务器的资源。如果你把逻辑放在Controller,那么:

    • Controller需要访问服务器(数据库),在其中打破MVC规则。另一件事是,Controller现在知道连接(字符串或物理文件存储)。如果您添加另一个适配器/网桥,那么这是额外的努力
    • 计算无法应用于其他UI实现。在.Net中说,你把它放在Asp.Net MVC中并在Controller中添加计算。如果有时您需要支持桌面UI,那么计算就不能按原样使用(因为已经受到控制器操作的污染,添加了无用的Web依赖等)
  2. 出于性能原因,模型的某些部分应该是延迟加载的。

    我不确定你的目标。但是让我们通过这个。我假设您有Header模型,其List Details需要延迟加载。这可以通过2种方法实现。

    第一种方法是在Details属性上实现延迟加载,第二种方法是检索从存储库中检索的特定Details或id给出的Header列表。他们两个都是一样的。恕我直言,我更喜欢第二种,因为在以后的解决方案中,您可以在其他模块中重用存储库,并允许您选择Details而不指定Header。该展示位置,我相信它应该在Model

  3. 我可能会误解这个要求。