5

我的应用程序应该是可扩展的。为了我自己的需要,我实现了一些服务。这些服务基于 IoC/DI 原则。所以服务封装了应用程序的概念。

例如,有一个 IApplicationService。ApplicationService 公开有关当前正在执行的应用程序的信息。指定了 AssemblyInfo 等。另一个示例是 INavigationService(请参阅示例中的 mef.codeplexcom)。此服务提供了一些属性,其中包含有关指定的当前选定项目的信息以及一些事件。

我认为,“服务方法”是最简单的,并且简化了应用程序的扩展点。所以,我不确定这真的是最好的方法。你怎么看?您将如何在诸如 addins/addons/plugins ... 之类的应用程序中实现“扩展点”?

提前感谢您的回复!对不起,我的英语很差。;)

4

3 回答 3

4

您熟悉MEF(托管可扩展性框架)吗?

托管可扩展性框架(或简称 MEF)简化了可扩展应用程序的创建。MEF 提供可用于加载应用程序扩展的发现和组合功能。

于 2010-07-25T13:49:36.593 回答
2

您非常需要查看 MEF - 托管可扩展性框架。

这是 Microsoft 自己在例如 Visual Studio 2010 中用于其可扩展性故事的一个很棒的新框架。伟大且易于使用 - 当您可以使用成千上万的开发人员将很快使用的东西时,为什么要重新发明轮子?

于 2010-07-25T13:50:19.517 回答
0

是的,我熟悉MEF。我也使用MEF的概念,但是有一些缺点。我的应用程序类似于 IoC/DI,与 MEF 一起使用有点复杂。MEF 并不是真正的 DI 容器,因此将 MEF 与其他 DI 容器(例如 ninject、unity、...)一起使用很难实现这一点。我不会将 MEF 与其他 DI 容器一起使用。因此,将 MEF 与其他 DI 容器混合并不是很好。

我希望你能理解我的担心。

另外:无法将扩展加载到 MEF 中的 AppDomain。所以这对我的需要不好。System.AddIn 或 MAF 支持这个,但我不会使用 System.AddIn,因为这很重......。

于 2010-07-25T14:09:33.380 回答