【问题标题】:Design Pattern for implementing plugins in your application? [closed]在您的应用程序中实现插件的设计模式? [关闭]
【发布时间】:2008-10-07 03:35:15
【问题描述】:

为您的应用程序允许和实现插件系统的标准方法是什么?

在我的上一个应用程序中,我为它们必须实现的所有插件创建了一个简单的接口。然后,我将所有程序集加载到应用程序目录中,并丢弃任何未实现该接口的程序集。

接口中的一个方法是 DoWork() 方法,该方法会定期在所有加载的程序集上调用,以执行插件可能具有的任何操作。

制作插件系统的“正确”方法是什么?你只是为插件创建一个接口吗?您是否应该定期在所有插件中调用特定方法?有没有更复杂的方法?


编辑:

感谢 Matt Hamilton 对 System.Addin 命名空间的引用。这很可能是我实现插件的方式。但是,总的来说,我仍然对插件架构感到好奇,并且不介意它们应该被设计、实现的最佳方式的背景知识......一旦加载,你应该如何调用它们等等。

【问题讨论】:

标签: .net design-patterns plugins


【解决方案1】:

根据this response 查看 System.AddIn 命名空间以解决类似问题。

【讨论】:

    【解决方案2】:

    Microsoft 的 Glenn Block 和 Brad Abrams 最近发布了托管可扩展性框架,该框架提供了一个框架来处理您所谈论的内容。

    文档和下载地址在here

    Glenn'sBrad's 博客也是 MEF 的绝佳资源。

    【讨论】:

      【解决方案3】:

      从严格的设计模式的角度来看,您可能想看看OSGi(这是高度面向 Java 的,但被认为是一个非常非常好的插件/模块系统)。对于您要实现的目标可能有点过头了,但是其中有很多非常好的东西,关于如何在运行过程中动态处理加载和卸载模块等等......

      【讨论】:

        猜你喜欢
        • 2012-03-03
        • 1970-01-01
        • 2010-12-07
        • 2012-07-14
        • 2013-02-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多