2013-12-17 34 views
0

我工作的一个棱镜/ WPF的项目,我已经有一个包含三个模块所有这一切的实现MVVM模式的框架。每个模块都有自己的用户界面,用户可以在其中提供一些数据,然后可以将这些数据传送到服务器。 现在,我的问题是:在Prism应用程序中的模块只涉及用户界面的不同部分?我是否也可以创建一个模块来实现与服务器的通信,还是应该为此创建另一个项目? 假设与服务器的通信是在模块中实现的,并且我有一个名为UserAccount的类,并且具有用户界面的所有其他模块都需要有权访问它。 UserAccount应该作为服务器通信模块的一部分还是作为Infrastracture的一部分?棱镜:新建项目与新的模块和通信模块之间

在我看来,我应该实现一个模块中的服务器和模块应包含类,如UserAccount通信,但基础设施应该包含创建UserAccount对象,以便它可以从所有其它模块进行访问。 这是一个正确的方法吗?

此外,您可以推荐任何棱镜的文件,与这些类型的问题涉及?

回答

1

那些模块之间共享所有类型应该是在一个单独的共享组件(基础设施服务于这个角色的吗?)。这包括接口定义和将携带信息的所有自定义类型。

是的,你的服务器通信模块,听起来就像是为自身的模块的理想选择,尤其是如果有涉及到服务器通信的共享资源。

编辑 - 共享大会

  • Assembly1:进口之一IMyServiceModule
  • Assembly2实例:实现IMyServiceModule和出口实例
  • Assembly3:共享的组件。定义IMyServiceModule接口和支持类。通过Assembly1和Assembly2

为什么引用?允许模块松散耦合并避免循环引用。

+0

究竟你“单独的共享组件”是什么意思?比方说,我有一个类和一个ViewModel从一个模块A创建该类的一个实例。模块B中的ViewModel需要访问模块A中由ViewModule创建的对象。应该怎么做?应该从模块B的ViewModel直接从模块A的ViewModel访问它,还是应该间接完成这个操作(以及如何操作?)。 – mobearette

+0

@mobearette见编辑 – Gusdor