【发布时间】:2011-04-01 13:48:48
【问题描述】:
PRISM 和 MEF 等框架可以非常轻松地使用多个可组合的组件来设计复杂的应用程序。一个常见的例子是插件架构,其中应用程序外壳可以使用插件 UI 组件动态重新配置(例如,通过将 DLL 放入 Plug-ins 目录)。
这一切都很好,但是正如 Vaccano 在 Can Prism be modular when calling webservices? 中发现的那样,在某些情况下,每个单独的插件都需要自己的一组配置 - WCF 绑定是一个典型示例,但还有许多其他场景(日志记录、数据库连接等)具有类似需求。
所以,在我看来,我们的选择是:
- 所有配置都进入 shell 应用程序的
App.config(正如 Vaccano 所说,这破坏了该模型的整个封装和部署优势),或者 - 每个插件程序集都使用定制机制进行配置(例如嵌入式资源),然后使用它来动态配置 WCF 服务,例如(最好的情况是混乱且耗时,最坏的情况可能无法)
这些选项都不是理想的,但它们是解决方法。但是,理想的情况是每个插件 DLL 都具有自包含配置(例如嵌入式资源文件)或 Xxx.dll.config 文件,并将这些 XML 配置片段中的每一个合并到 App.config 配置中shell 应用程序在运行时动态地运行。这让人想起 Machine.config 和 App.config 文件合并的方式。
因此,我的问题是:是否有人遇到过任何现有的框架或技术,可用于将复合配置文件动态合并到容器应用程序的进程内配置中? 我很惊讶没有将其视为 PRISM 或 MEF 的一部分,因此如果我遗漏了一些明显的东西,我会稍微谨慎地发布这个问题 - 如果是这样,请安静地发布相关链接 :) p>
【问题讨论】:
标签: c# .net configuration prism mef