【问题标题】:The best model for integration of plugins插件集成的最佳模型
【发布时间】:2010-10-15 17:22:50
【问题描述】:

我们有许多插件应用程序,它们都可以独立运行,也可以在同一个主机容器中运行。用户可以使用一个或多个插件运行一个主机容器或多个主机容器。

我们有许多人们想要的“集成”用例

  1. 将数据从一个插件发送到另一个插件
  2. 向另一个应用发送“操作”或“命令”(有时带有参数)

我们有两种选择:

  1. 在容器级别有一个众所周知的事件总线,所有插件都知道并且可以发布和订阅明确定义的消息或对象

  2. 将一个插件的 dll 嵌入另一个插件并从另一个插件调用一个插件的 API

  3. 创建了解通用集成点的集成插件,这样每个单独的插件都是完全独立的,并且集成插件是唯一了解集成的东西。这是因为我们可以发布每个单独的插件,而无需任何额外的依赖。

想法或其他建议?

【问题讨论】:

  • 这听起来是个很好的问题,如果有更多细节的话。举几个两个插件如何交互的例子怎么样?

标签: c# integration


【解决方案1】:

我会看看微软目前正在开发的新的托管扩展框架 (MEF) 库。见the Codeplex site。据我正确理解,VS 2010 也将使用此框架在 Visual Studio 中提供扩展点。

【讨论】:

    【解决方案2】:

    Smart Client Software Factory 是另一个需要考虑的指导。它大部分是 WinForms,可能比新的 WPF 版本(完全重新架构)稍微复杂一些。但是,它也会为您提供实现模块化目标的想法。链接和文档很好地涵盖了模块的分离方式,但可以通过通用框架传递数据。

    【讨论】:

      【解决方案3】:

      考虑 Microsoft 的模式和实践Composite Application Guidance for WPF and Silverlight。即使它不是您所需要的,学习一些方法来完成模块化所需的某些功能(例如在模块之间共享数据)也是一个很好的模式。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-12-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多