我正在制作一个Prism桌面应用程序,并打算使用WCF服务在我的模块中的视图中填充列表框等。
我已经从封面到封面阅读了指南,并设置了我的解决方案,以便我有: -
1)壳牌项目
2)基础设施项目
3)模块1
4)模块2
在Module1中,我有一个viewmodel,它包含一个ObservableCollection Customers ,它通过直接在视图模型中调用WCF服务来填充。
我觉得这不对,我想遵循Prism最佳实践来引用WCF服务。在这方面,参考实现似乎并没有帮助我。
我的第一次尝试是在基础结构项目中创建一个接口IWCFCustomersAdapter,并将此调用转发给WCF服务客户端。它在Infrastructure项目中实现。服务引用也会添加到Infrastructure项目中。每个模块都引用了基础结构项目,并使用WCF服务中定义的数据类型。
在这种情况下,其他/最佳选择是什么?接口是否仍然可以进入基础结构项目,服务引用和实现是否可以进入模块?不同选择的利弊是什么?
最值得赞赏的任何提示和建议。
由于
亚历
答案 0 :(得分:2)
基础架构模块仅用于基础架构,即用于使模块协同工作的类型。这些主要是用于通信,事件聚合,异常处理等的类型。我不会在那里放置服务适配器。它们不属于基础设施。
从我的角度来看,专用服务模块是一个更好的地方。如果您的服务器提供多种服务,您可以引入一个服务器通信模块,其中包含所有服务适配器以及DTO。这些DTO也可以用作模型。
如果您的服务器提供了相当多的服务,您可以将服务模块拆分为更具体的服务,例如用户管理服务模块,具有会话管理,用户管理,权限管理等功能。