2

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

现在的问题是:

  1. 模型中有一些计算需要服务器中的一些资源。
  2. 出于性能原因,模型的某些部分应该延迟加载。

一个例子是文档中的图像。打开文档时它没有加载,但是有一些东西会加载图像,一旦加载它就会让文档知道并且文档将重新计算布局。

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

4

2 回答 2

1

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

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

于 2013-06-04T07:04:46.560 回答
0

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

让我们突破要求:

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

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

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

    我不确定你的目标。但是让我们经历一下。我假设您有需要延迟加载的Header模型。这可以通过2种方法来实现。ListDetails

    第一种方法是在Details属性上实现延迟加载,第二种方法是检索Details由特定Header或 id 给定的列表,从存储库中检索。他们俩的结果都是一样的。恕我直言,我更喜欢第二个,因为通过以后的解决方案,您可以在其他模块中重用存储库,并使您能够选择Details没有特定Header的 . 位置,我相信它应该是 on Model

我可能会误解这个要求。

于 2013-06-04T11:12:39.907 回答