将MVVM、ORM和一些硬件接口组合在一起

3

我正在尝试规划一个机器人控制器应用程序的架构,将使用WPF编写。由于MVVM是WPF的事实标准模式,并且通常更加先进,因此我决定以它作为基本布局。

该应用程序将具有一些控制器,这些控制器访问硬件,超出了表示数据库和实用程序类的域模型。对于数据库访问,我打算使用Repository(将Ayendes IRepository作为一般想法),然后使用Linq2sql或EF4进行实际访问。

该应用程序还将拥有自己的脚本引擎,用于自定义脚本。

但是我不确定的是,是否应该将对硬件控制器和脚本引擎的访问视为域模型的一部分或下层,还是从控制器级别直接访问。

我试图绘制出我认为正确的方法。但我完全不确定这是否是正确的方法,因此我希望在此方面得到一些意见和建议,以及如何可能更好地完成它。

http://dl.dropbox.com/u/1744224/Upload/Drawing7.png


我认为从ViewModel到View的箭头不应该存在,我错了吗? - la mouette
@la mouette 这是有意为之的。在WPF中,使用MVVM模式时,视图和视图模型通过数据绑定进行双向通信。 - Claus Jørgensen
脚本不会被持久化存储,它们仅仅是用户输入的内容,没有添加任何价值(重用/版本/检查)?硬件控制器是强制还是可选的?是否总是有机器人/重量/语音? - la mouette
脚本可能会保存在文件系统中,并通过UI进行导入。脚本引擎仅会获取一个字符串参数,没有其他操作。机器人/重量/声音控制器始终是可调用的模块。基本上我想知道应该把“RobotController robot = new RobotController()”放在哪里。但由于机器人控制器具有需要更新UI的事件,因此我认为该控制器是最佳位置。 - Claus Jørgensen
1个回答

1
你应该将低级控制器和脚本引擎视为你的领域模型的一部分,但是你需要通过抽象(例如接口)来表示它们,以便你可以正确地测试领域的其余部分。
我也建议不要在前期进行太多设计工作,而是让你的设计通过TDD逐步演化,否则你可能会尝试强行按照UML图表实现代码,这将带来风险。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接