我在MVVM架构中有一个WPF客户端。
WPP客户端需要连接到WCF服务,并向其发送操作。
这种能力需要来自不同的视角,因此意味着不同的模型(对吧?)
的的问题: 的
答案 0 :(得分:1)
IMyWcfService
作为任何ViewModel的依赖项,以实现您可以使用受保护的构造函数创建ViewModelBase
抽象类,该构造函数接受IMyWcfService
,因此所有具体的ViewModel都有义务提供这项服务正如评论中已经说明的那样 - 尽量避免使用服务定位器,这会破坏API和单元测试。只需提供所有依赖项作为构造函数参数,这样就可以使类API更加清晰,这样您就可以看到所需的内容,而不必担心“服务定位器无法解析服务”等运行时错误
答案 1 :(得分:1)
我个人认为Models
不应该只是容器数据的普通容器对象。它们不应包含数据访问代码或除基本数据验证之外的任何其他应用程序逻辑,以验证其数据完整性。
您的ViewModels
应该是负责与WCF服务器通信的人。或者更好的是,创建一个包含所有数据访问调用的存储库类,并让ViewModel使用它。
不要忘记,使用MVVM,您的ViewModels
是您的应用程序。它们负责从应用程序流,业务逻辑到数据访问的所有内容(尽管有时这些概念是从VM中抽象出来的,例如使用Repository进行数据访问)。
Views
只是一个用户友好的界面,位于ViewModel之上,允许用户与它们进行交互,而Models
只是用于包含数据的对象。