我们有一个通过接口支持插件的应用程序。另一方面,插件本身包含大量逻辑和代码。除了应用程序公开的接口之外,插件对应用程序库具有依赖项(项目和 dll 引用)。
应用程序核心库有许多可以在插件中使用的可重用组件。但是,如果这些组件中的任何一个发生了变化,插件和应用程序都会受到影响,因为它们都有依赖关系。
是否可以接受包含对系统的依赖项的插件,插件扩展?关于这个问题的最佳实践是什么?
请分享您的想法和经验。
我们有一个通过接口支持插件的应用程序。另一方面,插件本身包含大量逻辑和代码。除了应用程序公开的接口之外,插件对应用程序库具有依赖项(项目和 dll 引用)。
应用程序核心库有许多可以在插件中使用的可重用组件。但是,如果这些组件中的任何一个发生了变化,插件和应用程序都会受到影响,因为它们都有依赖关系。
是否可以接受包含对系统的依赖项的插件,插件扩展?关于这个问题的最佳实践是什么?
请分享您的想法和经验。
看看Mono.Addins,即使你不是用 C# 开发,它也会给你一些很棒的想法。
简单的解决方案是为插件和核心定义一个版本系统,这样核心就可以读取插件需要的自身版本。这种方式很容易防止插件的加载,该插件旨在与先前版本的核心一起使用。
我认为您的问题有两个答案,具体取决于我们正在谈论的级别:
我认为让你的插件引用你的核心是完全可以的。现在您正在谈论项目和 dll 引用,因此您必须使用 c#、vb 或 c++,这些解决方案都应该可以使用。
我通常有两个项目来绕过循环依赖。
我通常加载插件的三种方式