Prism使用模块(Module)的概念来对应用程序进行划分。一个module封装相关的关注点,并且具有单一的职责。module既可以按照应用程序的业务逻辑进行划分,也可以按照应用程序的架构层次进行划分。很多大型应用可能会同时包含两种类型的Module。
下图中,按照应用程序的业务逻辑进行模块划分:
下图中,按照应用程序的架构层次进行模块划分:
下面是设计模块的一些例子:
- 一个模块可以是包含应用程序特定的业务逻辑的模块。
- 一个模块可以是包含应用程序基础服务的模块,比如logging, caching, authorization 服务。
- 一个模块可以是调用其它系统的模块。
总之,模块并不一定只能按照业务逻辑进行划分,它可以是一个很灵活的设计。
两个模块之间应该是最小依赖,如果一个模块依赖另一个模块,应该通过松耦合的方式,使其都依赖于定义在shared library中的接口或者使用EventAggregator的方式进行通信。
一、定义Module
public class MyModule : IModule
{
public void Initialize()
{
// Initialize module
}
}
二、注册Module
可以有三种方式注册Module:代码方式、XAML方式和配置文件方式。
代码方式:
protected override void ConfigureModuleCatalog()
{
Type moduleCType = typeof(ModuleC);
ModuleCatalog.AddModule(
new ModuleInfo()
{
ModuleName = moduleCType.Name,
ModuleType = moduleCType.AssemblyQualifiedName,
});
}
XAML