在过去的几天里,我花了很多时间为我的程序创建架构,但仍然遇到问题。目前它看起来像这样:
现在我的问题:我想构建一个具有一些优化能力的调度应用程序(它是单个用户和单个pc应用程序,因此不需要像Web应用程序那样进一步解耦)。但我有一个问题,我不知道这个应用程序在这个架构中的位置?
考虑以下用例:用户单击View上的“Start”按钮,该按钮调用ViewModel,后者重定向到我的调度/优化应用程序。然后,此应用程序从数据库获取所有新作业,并创建/更新当前计划。然后,ViewModel应使用新创建的计划更新旧计划。最后,View向用户显示生成的计划。 在这种情况下,我的ViewModel知道我的应用程序(因为它调用它)和我的域/业务对象(因为我的应用程序将提供例如ViewModel封装的 Schedule 域对象)。
这是EF,MVVM和我的应用程序的正确用法吗?
此致
答案 0 :(得分:1)
首先,您需要确定应用程序的哪些部分位于哪里,并且这很容易做到。从本质上讲,您必须问自己:此方法或类是否有助于定义我的域。如果答案是肯定的,则将其放在域图层中,如果不是,则将其放在演示文稿中。
以下是您在示例中的看法:
如果您只想获取现有的Schedule对象,则可能会有所不同。您可以要求域存储库获取现有计划,而不是调用域服务。存储库将是从PL和域中封装或以其他方式模糊数据层的方式。
现在,你不想做什么:
很难准确详细说明您应该放置哪些内容,因为只有您可以清楚地了解您的域名的定义,但这主要是我如何分解它:
我可以在不影响我的商家/网域工作方式的情况下更改/替换此内容吗?
如果答案是肯定的,则它不属于您的域名。示例:您可以将整个MVVM前端替换为平面PHP或ASPX,即使它需要大量工作和巨大的痛苦,您也可以在不影响其余业务运营的情况下执行此操作。