我正在尝试为机器人控制器应用程序规划一个架构,该架构将用WPF编写。由于MVVM是WPF的事实上的模式,并且通常更加性感,我决定将其用作基本布局。
除了代表数据库和实用程序类的domainmodel之外,应用程序将有一些访问硬件的控制器。对于数据库访问,我打算使用Repository(将Ayendes IRepository作为一般概念),然后使用Linq2sql或EF4进行实际访问。
该应用程序还将拥有自己的脚本引擎,用于自定义脚本。
但我不确定的是,我是否应该考虑访问硬件控制器和脚本引擎,部分或低于域模型,或者从控制器级别直接访问的内容。
我试图拟定我认为正确的做法。但我完全不确定这是正确的方法,所以我会喜欢这方面的一些意见和建议,以及我如何可以做得更好。
答案 0 :(得分:1)
你应该绝对认为低级别控制器和脚本引擎是域模型的一部分,但是你应该通过抽象(即带接口)来表示这些,以便你可以正确地测试你域名的其他部分。
我还建议不要做更多的前期设计,而是让你的设计通过TDD进化,否则你冒着试图破解实现的风险,只是为了适应你的UML图...
答案 1 :(得分:0)
我对此有一段时间的想法现在让我认为控制器部分的模式在这个设计中是相当多余的。再次,它是MVVM而不是MVVMC或MVC:)
最终需要证明抽象的合理性,或者它只是服务模式的冗余。观察者不应该有的东西。
所以我现在的设计看起来像这样。硬件控制器都是基于事件的,并且意味着进行UI更新,所以我认为直接从viewmodel访问它们确实做。
我们可能仍然会使用DI / IoC进行设计,因此,如果有必要,松耦合可以在以后允许调解器。
但是现在我会把问题留给更好的答案:)