【问题标题】:PRISM modules with multiple assemblies per module每个模块具有多个组件的 PRISM 模块
【发布时间】:2016-06-21 18:09:58
【问题描述】:

我有一个 WPF 应用程序,它使用具有三个常规层的分层架构:用户界面、业务逻辑和数据层。现在我需要按功能区域(例如客户、产品、订单)将应用程序分成垂直切片。同时,我想在每个垂直切片内保持水平层分离。

我正在考虑使用 PRISM 模块化框架来完成此任务。因此,每个功能区域(垂直切片)都将表示为一个 PRISM 模块。但由于我的模块具有分层架构,每个模块可能包含多个程序集。

根据 PRISM 文档,ModuleCatalog 假定每个模块都在一个组件中。我不确定如何将多个程序集分组为一个模块。如果可以做到这一点,有什么想法吗?

编辑 -- 我没有提到我想通过不直接引用层的实现程序集来解耦层。相反,我在相应层的接口项目中定义接口,以便使用它的层仅引用接口项目。鉴于此,我仍然需要一种方法来告诉模块有关其层的实现程序集。

【问题讨论】:

    标签: wpf prism


    【解决方案1】:

    你想多了。您的其他程序集将只是您的模块项目中的引用。您只需将模块添加到 ModuleCatalog,只要您有引用的程序集,它就会按预期工作。

    【讨论】:

    • 嗨,Brian,我没有提到我想通过不直接引用层的实现程序集来解耦层。相反,我在相应层的接口项目中定义接口,以便使用它的层仅引用接口项目。鉴于此,我仍然需要一种方法来告诉模块其层的实现程序集。
    • 您的主要回答引发了另一个问题:您会推荐一个单独的项目来定义模块类吗?我正在考虑在 UI 层项目中使用模块类。有没有推荐的构建分层模块的做法?
    • 只引用接口组件也没关系。只要您在容器中注册了您的实现,它就可以在运行时工作。
    • 再一次,你在思考模块。没有“分层”模块。模块只是应用程序的主要功能区域。它们可以依赖于其他模块或独立存在。服务不是模块,即使它们在模块中使用。如果您愿意,您可以使用一个模块来注册您的所有服务,但也有其他方法可以做到这一点。
    • 很抱歉,我可能遗漏了一些东西。如果一个应用程序的一个功能区域有一个 UI、它自己的服务和数据存储库,为什么不能将它们组织成层并被视为一个功能区域模块? (例如,这个功能区域是由一个单独的团队开发的)。我希望服务是功能区模块的一部分,并且只有在初始化模块时,它的服务才会在容器中注册。你能澄清一下吗?
    猜你喜欢
    • 1970-01-01
    • 2014-09-20
    • 1970-01-01
    • 1970-01-01
    • 2018-10-27
    • 1970-01-01
    • 1970-01-01
    • 2015-11-25
    • 1970-01-01
    相关资源
    最近更新 更多