棱镜:新项目与新模块和模块之间的通信

时间:2013-12-17 14:34:07

标签: c# wpf mvvm prism

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

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

另外,您能推荐一些处理这类问题的棱镜文档吗?

1 个答案:

答案 0 :(得分:1)

模块之间共享的所有类型都应位于单独的共享程序集中(Infrastructure为您提供此角色?)。这包括接口定义和将携带信息的所有自定义类型。

是的,您的服务器通信模块听起来非常适合作为自己的模块,特别是如果服务器通信中涉及共享资源的话。

编辑 - 共享程序集

  • Assembly1 :导入IMyServiceModule
  • 的一个实例
  • Assembly2 :实施IMyServiceModule并导出实例
  • Assembly3 :共享程序集。定义IMyServiceModule接口和支持类。由Assembly1和Assembly2引用

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