我正在充实我的脑海中的WPF业务应用程序,引起我兴趣的一件事是我应该如何处理它令人难以置信的模块化。例如,我的主应用程序将简单地包含启动接口,加载模块,连接到服务器等的基础知识。这些模块以类库的形式包含它们自己的逻辑和WPF窗口。模块可以定义自己的资源字典,并从主应用程序的资源字典中获取常用画笔等。
实施这种性质的系统的最佳方法是什么?如何构建主界面以使其加载的模块几乎可以改变其用户界面和逻辑的任何方面?
我意识到这是一个相当含糊的问题,但我只是在寻找一般的输入和头脑风暴。
谢谢!
答案 0 :(得分:9)
查看Composite Client Application Guidance
复合应用程序库旨在帮助架构师和开发人员实现以下目标:
从可以使用WPF或Silverlight由独立团队构建,组装和(可选)部署的模块创建复杂应用程序。
最大限度地减少跨团队依赖关系,并允许团队专注于不同领域,例如用户界面(UI)设计,业务逻辑实现和基础架构代码开发。
使用可提升独立团队可重用性的架构。
通过抽象所有团队可用的公共服务来提高应用程序的质量。
逐步整合新功能。
答案 1 :(得分:2)
首先,您可能对SharpDevelop实施感兴趣。它基于它自己的addin系统AddinTree。这是一个单独的项目,可以在您自己的解决方案中免费使用。所有内容都分为不同的插件,可以通过xml文件轻松添加/删除/配置插件。 SharpDevelop是一个开源项目,因此您将有机会了解基础架构的引入方式,以及服务总线和交叉插件集成。核心插件树可以很容易地移动到WPF项目而没有任何影响。
下一个选项是前面提到的“Composite Client Application Guidance”(又名Prism,又名CompositeWPF)。您将获得开箱即用的Unity(对象构建器)支持,事件聚合以及实现的一组有价值的设计模式。
如果你想自己执行一些低级别的设计和架构,MEF将是最好的选择(尽管与我个人喜欢这三个人一起工作)。这就是VS 2010的基础,因此您可能确定项目将来不会失去支持。
我的建议是详细阐述这些方法,并选择最适合您需求和项目需求的最佳方法。
答案 2 :(得分:1)
查看Prism