【问题标题】:Building a highly modular business application with WPF?使用 WPF 构建高度模块化的业务应用程序?
【发布时间】:2010-10-16 17:10:45
【问题描述】:

我正在充实我脑海中的 WPF 业务应用程序,而引起我兴趣的一件事是我应该如何处理使其难以置信的模块化。例如,我的主应用程序将简单地包含启动界面、加载模块、连接到服务器等的基础知识。这些模块以类库的形式包含它们自己的逻辑和 WPF 窗口。模块可以定义自己的资源字典,并从主应用程序的资源字典中提取常用画笔等。

实施这种性质的系统的最佳方式是什么?应该如何构建主界面,以便它加载的模块几乎可以改变其用户界面和逻辑的任何方面?

我意识到这是一个相当模糊的问题,但我只是在寻找一般性的意见和头脑风暴。

谢谢!

【问题讨论】:

    标签: c# wpf module add-in


    【解决方案1】:

    查看Composite Client Application Guidance

    复合应用程序库旨在帮助架构师和开发人员实现以下目标:

    使用可由独立团队使用 WPF 或 Silverlight 构建、组装和(可选)部署的模块创建复杂的应用程序。

    最大限度地减少跨团队依赖,让团队专注于不同领域,例如用户界面 (UI) 设计、业务逻辑实施和基础架构代码开发。

    使用可促进独立团队之间可重用性的架构。

    通过抽象出可供所有团队使用的通用服务来提高应用程序的质量。

    逐步集成新功能。

    【讨论】:

      【解决方案2】:

      看看Prism

      【讨论】:

      • Prism 是 Gulzar 提到的“复合客户端应用指南”
      • 丹尼斯:两个答案几乎同时发布。
      【解决方案3】:

      首先您可能对SharpDevelop 的实现感兴趣。它基于它自己的插件系统,称为 AddInTree。它是一个单独的项目,可以在您自己的解决方案中免费使用。一切都在不同的插件中拆分,插件可以通过 xml 文件轻松添加/删除/配置。 SharpDevelop 是一个开源项目,因此您将有机会研究如何引入基础架构以及服务总线和跨插件集成。核心插件树可以轻松地移动到 WPF 项目中而不会产生任何影响。

      下一个选项是前面提到的“Composite Client Application Guidance”(又名Prism,又名CompositeWPF)。您将获得开箱即用的 Unity(对象构建器)支持、事件聚合以及实现的一组有价值的设计模式。

      如果您想自己执行一些低级设计和架构,MEF 将是最好的选择(尽管我个人喜欢这三个一起工作)。这是 VS 2010 的基础,因此您可以确定该项目将来不会失去支持。

      我的建议是详细说明这些方法,并选择最适合您的需求和项目需求的最佳和有效的方法。

      【讨论】:

        猜你喜欢
        • 2018-09-28
        • 2014-08-11
        • 2015-08-27
        • 1970-01-01
        • 2015-05-01
        • 2018-10-01
        • 2019-10-13
        • 2014-07-20
        • 1970-01-01
        相关资源
        最近更新 更多