Web services 在客户端MVC中,谁应该处理客户端与服务器之间的通信?

Web services 在客户端MVC中,谁应该处理客户端与服务器之间的通信?,web-services,model-view-controller,architecture,Web Services,Model View Controller,Architecture,我正在开发客户机/服务器产品。基本上,服务器会将文档传输到客户端进行编辑。客户端具有完整的MVC体系结构。文档就是模型 现在的问题是: 模型中有一些计算需要服务器中的一些资源 出于性能原因,模型的某些部分应该延迟加载 一个例子是文档中的图像。它在打开文档时没有加载,但是有一些东西加载了图像,一旦加载,它会让文档知道,文档会重新计算布局 我的问题是,通信代码是模型还是控制器的一部分?或者它属于既不是模型也不是控制器的上下文?或者上下文属于模型?模型层应该与数据源交互。在客户机-服务器设置中,您有两

我正在开发客户机/服务器产品。基本上,服务器会将文档传输到客户端进行编辑。客户端具有完整的MVC体系结构。文档就是模型

现在的问题是:

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


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

    模型层应该与数据源交互。在客户机-服务器设置中,您有两个独立的三元组,客户机模型层的数据源将是服务器的表示层


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

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

    让我们突破这个要求:

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

    这种计算最好放在
    模型
    ,因为它需要来自服务器的资源。如果将逻辑置于控制器,则:

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

    我不确定你的目标是什么。但让我们经历一下。我假设您有
    标题
    模型,它有
    列表
    细节
    ,需要延迟加载。这可以通过2种方法实现

    第一种方法是在
    Details
    属性上实现延迟加载,第二种方法是从存储库中检索特定
    Header
    或id提供的
    Details
    列表。两者的结果相同。我更喜欢第二个,因为在以后的解决方案中,您可以在其他模块中重用存储库,并允许您选择
    详细信息
    ,而无需特定的
    标题
    。位置,我相信它应该在
    模型上

  • 不过,我可能误解了这个要求