我正在编写一个Web应用程序,我想让第三方开发人员编写可以加载到应用程序中的“插件”来修改标准中的行为。
所以传统智慧会建议这样的事情:
public interface IPlugin {
void Execute (IPluginContext context);
}
然后,第三方开发人员可以实现该接口,使用上下文,然后将其代码注册到要执行的应用程序(通常附加到某些消息和前/后条件)。
我的问题是如何公开这些接口。最简单的事情似乎是创建一个MyApplication.SDK
库,它只包含我想要公开的接口和类。但是,这意味着我的主应用程序需要引用此库,因此SDK正在用于构建应用程序,这听起来有点回头。
无论如何在两个应用程序和主Web应用程序中都有一个IPlugin接口使用SDK的IPlugin接口,就好像它是自己的一样?因为它们都是相同的?
答案 0 :(得分:4)
当您构建可插入系统时,您希望向插件作者公开的接口和支持类是您与插件作者之间的契约。因此,您的应用程序及其插件都可以引用同一个合同库。因此,您应该将插件架构的接口和支持类放入SDK库中。
此外,通过拥有SDK库,您可以在以后的新库中发布新版本,并可能支持多个版本的插件接口,这将允许您在保持向后兼容性的同时发展该功能。