【问题标题】:Plug In Design for .NET App.NET 应用程序的插件设计
【发布时间】:2008-09-05 16:53:13
【问题描述】:

我正在考虑用 C# 重写我们应用程序的一部分(目前是旧版 VB6 代码)。我开始使用的模块负责将来自各种系统的数据导入我们的数据库。大约每年 5-6 次,一个新客户要求我们为他们使用的系统编写一个新的导入。目前,这要求我们为添加到应用程序的每个新导入选项发布新版本的软件。

重写的目标之一是使应用程序支持插件。每个新的导入都可以成为一个单独的程序集,主机应用程序将识别并允许最终用户与之交互。这有望在某种程度上简化生活,因为我们可以简单地将一个新程序集放到目录中,并让它被主(主机)应用程序识别和使用。

我正在努力解决的一个问题与我们目前支持的导入选项之间的差异有关。在某些情况下,我们实际上让用户指向一个目录并将目录中的所有文件读入我们的系统。在其他情况下,我们允许它们指向单个文件并导入其内容。此外,一些导入具有用户应用的日期范围限制,而另一些则没有。

我的问题是,我如何设计应用程序,以便在我们构建和支持的导入之间具有一定的灵活性,同时实现一个通用接口,使宿主应用程序能够轻松识别插件以及每个选项向用户公开的选项?

【问题讨论】:

    标签: .net plugins interface-design


    【解决方案1】:

    我建议您查看 .NET 3.5 附带的托管加载项框架。 Add-In team 也在CodePlex site 上发布了一些示例和工具..

    【讨论】:

      【解决方案2】:

      .Net 3.5 具有 system.Addin 命名空间。

      这个线程也有一些关于旧版本框架的好信息:
      http://forums.devshed.com/net-development-87/system-plugin-532149.html

      【讨论】:

        【解决方案3】:

        有关理论,请查看 martin fowlers Patterns of Enterprise Application Architecture 中的 plugin pattern

        有关有趣的示例,请查看本教程:Plugin Architecture using C#

        【讨论】:

          猜你喜欢
          • 2011-03-11
          • 1970-01-01
          • 2011-07-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-06-21
          • 2011-05-24
          • 1970-01-01
          相关资源
          最近更新 更多