我想要实现插件式应用程序。我知道现在已经有几种解决方案,但这只是对这个概念的证明,没有其他。这个想法是让应用程序的主应用程序在默认情况下几乎没有特色,然后让插件相互了解,让它们实现所有需要的功能。.NET中的插件式体系结构
几个问题就出来了:
- 我想在运行时的插件来了解对方,通过我的申请。这并不意味着在代码时他们无法引用其他插件的程序集,因此他们可以使用它的接口,只有插件功能初始化应该始终通过我的主应用程序。例如:如果我既加载了插件X,又加载了Y,并且Y想要使用X的功能,则应该通过我的应用程序使用它的功能来“注册”它的兴趣。我必须在我的应用程序中有一种“字典”,用于存储所有已加载的插件。在注册我的应用程序的兴趣后,插件Y会获得对X的引用,以便它可以使用它。这是一个好方法吗?
- 当编码使用X的插件Y时,我需要引用X的程序集,所以我可以对它的接口进行编程。这有版本控制的问题。如果我将我的插件Y编码为插件X的过时版本,该怎么办?我是否应该始终使用所有组件的“中心”位置,总是有组件的最新版本?
有没有偶然的机会找到那些专门针对这些.NET设计的书?
感谢
编辑:我认为人们漂离我做了2个问题了。我可以看一下MEF和#develop,但我想详细解答我提出的问题。
我建议寻找MEF,这是全新的,但看起来很有希望。 – 2010-05-07 21:50:22
@马特 - 想你应该把这个作为一个答案 - 这正是我要说 – 2010-05-07 21:51:13
我已经听到了MEF的,但是作为OP说,我的想法是不使用已建成的框架,但落实它自己。它不需要非常复杂的东西。 – 2010-05-07 21:52:02