【问题标题】:Does a composable Application necessarily imply a Plugin based architecture可组合的应用程序是否一定意味着基于插件的架构
【发布时间】:2012-04-27 17:09:01
【问题描述】:

我目前正在开发一个应用程序,并希望为其添加新功能。

一种是直接更新应用程序的代码。

另一种方法是提供一个可扩展层,其中将添加新功能。

阅读了关于插件架构的多篇文章并使用 MEF 创建可组合应用程序后,我有点困惑这两个术语是否实际上意味着相同的东西,如果不是,它们有什么不同?

另外,我很想知道任何有助于“打开”我的应用程序以便将来更容易扩展的良好设计解决方案(新的未来可以“作为扩展”添加)

【问题讨论】:

    标签: c# .net architecture extensibility


    【解决方案1】:

    您肯定需要基于插件的架构才能拥有通用的可扩展性框架。

    但是,您不一定需要依赖容器或 MEF。

    这可能就像定义IPlugIn 接口并扫描程序集以查找实现该接口的类型一样简单。然后实例化该类型的一个实例以开始。

    【讨论】:

    • 问题仍然存在 - 如何征集许多应用程序选项/事件以进行自定义和扩展。简单的 IPlugin 界面对此没有帮助。
    • 这取决于。您必须决定扩展需要什么。 IPlugIn 可以有一个 IEnumerable<Message> Messages() 方法,您可以为它创建一个菜单,以某种方式调用消息。大多数插件架构都有一个已定义的结构,在逻辑上适合您的主机/外壳。
    • 这正是我的问题——我的“插件”或扩展根本不适合任何特定的地方,但应该能够融入我的应用程序中的几乎任何地方。当然,我可以提供各种 IPlugin 接口(IPluginUI 等)来扩展或与应用程序的不同方面进行交互。
    • 你可以走多接口路线(保持角色明确)。即使是像 MMC 这样通用的东西也有特定的结构。
    猜你喜欢
    • 1970-01-01
    • 2016-09-29
    • 1970-01-01
    • 2018-12-03
    • 2015-09-16
    • 2019-05-28
    • 2011-02-23
    • 1970-01-01
    • 2011-08-14
    相关资源
    最近更新 更多