假设您有一个MVVM CRM应用程序。
您通过存储库在内存中拥有许多客户对象。
从GUI处理与传统MVVM任务无关的任务的适当位置是什么?
例如,假设您每隔几分钟检查一下他们的地址是否有效,如果不是则会弹出通知。或者您想发送每小时的电子邮件更新。或者您想要弹出一个窗口提醒您在特定时间给客户打电话。
这个逻辑在哪里?它不是GUI /面向行动的,我认为它不适合存储库。
答案 0 :(得分:1)
我认为你所问的是,“我的MVVM实现应该如何处理与用户输入不直接相关的GUI相关任务?” (如果我误解了你,请告诉我。)
您描述的任务很可能由计时器协调。如果您将计时器的勾号框定为“用户操作”,那么它与传统的命令模型并没有什么不同。
这意味着视图模型将管理计时器并在响应中更新自身。它可以在向用户显示通知时设置属性,并且视图可以响应该属性的更改并显示弹出窗口。重要的概念是视图模型仍然负责协调行为,视图只是反映视图模型的当前状态。
(每小时电子邮件更新不是与GUI相关的任务,因为它不会与用户交互;我将其中的一个留在了混合中。)
对于实现定时行为的对象,@ epitka通过描述服务的概念来击中头部。通常,服务协调跨多个存储库或其他服务的行为。它们代表了无法分配给任何一个特定实体的特定于域的逻辑。