2009-09-14 76 views
0

我正在研究的产品需要以这样一种方式构建,即我们有一个由可插入框架驱动的报价引擎。插件框架 - 可以有太多的插件程序集?

我们目前正在考虑使用MAF,所以我们可以利用主机和插件接口的版本分离。

但是,我担心我们会有很多程序集,我们可能会为每个引擎引擎插件添加一个 - 其中可能会有100个插件,我们还需要支持多个版本,所以总共可能有很多组件。

报价引擎也使用WF来驱动它,这意味着每个插件的每个AppDomain都需要一个与其关联的工作流运行时。这似乎相当重量级,但我们可以卸载不常使用的插件。

这是否看起来像一个很好的设计?我们还查看了使用IOC容器加载外挂程序类型的单个AppDomain解决方案,但是我担心我们将无法卸载任何程序集,因为它们的数量有限。

+0

你的意思是MEF?如果是这样,你可能想重申这一点。 – TrueWill 2009-09-14 22:18:40

+0

不,我的意思是MAF - 管理的Addin框架,它是.NET 3.5的一部分。因为MEF是一个可扩展性框架,所以MEF只允许您将插件添加到您正在使用的AppDomain中。 MAF的主要的一点是,加载项可以在自己独立的AppDomain,您可以independantly确保主要的AppDomain运行。 – spooner 2009-09-15 05:18:43

回答

0

每个AppDomain和Assembly都会增加一些开销,但我没有意识到任何特定的限制。

你能做的唯一的事情就是测试(例如通过编写代码来生成许多非常相似,但不同的组件尝试与100,250,1000工作,....),看到的影响是什么)。

+0

谢谢,我将运行一些测试,看看对我们来说,单一AppDomain模型(通过IOC)还是多AppDomain模型(通过MAF)会有更好的性能。 我会根据结果更新问题。 – spooner 2009-09-15 10:10:56