我正在考虑用C# (目前是遗留的VB6代码)重写应用程序的一部分。我开始使用的模块负责将数据从各种系统导入到我们的数据库中。每年大约有5-6次,一个新客户要求我们为他们使用的系统编写一个新的导入。目前,这要求我们为添加到应用程序中的每个新导入选项发布一个新版本的软件。
重写的目标之一是使应用程序支持插件。每个新的导入都可以成为一个单独的程序集,宿主应用程序将识别该程序集并允许最终用户与其交互。这有望在一定程度上简化我们的工作,因为我们可以简单地将一个新的程序集放到目录中,并让它被主(主机)应用程序识别和使用。
我正在努力解决的一件事是关于我们目前支持的导入选项之间的差异。在某些情况下,我们实际上让用户指向一个目录并将该目录中的所有文件读取到我们的系统中。在其他情况下,我们允许它们指向单个文件并导入其内容。此外,一些导入具有用户应用的日期范围限制,而其他导入则没有。
我的问题是,如何设计应用程序,以便在我们构建和支持的导入之间具有一定的灵活性,同时实现一个公共接口,使宿主应用程序能够轻松识别每个插件以及每个插件向用户公开的选项?
发布于 2008-09-05 16:59:46
我建议您看看.NET 3.5附带的托管插件框架。Add-In team也在CodePlex site上发布了一些示例和工具。
发布于 2008-09-05 17:00:11
.Net 3.5具有system.Addin命名空间。
这个线程还提供了一些关于旧版本框架的好信息:
http://forums.devshed.com/net-development-87/system-plugin-532149.html
发布于 2008-09-05 17:02:11
有关理论,请看martin fowlers的企业应用程序架构模式中的plugin pattern
有关一个有趣的示例,请参阅本教程:Plugin Architecture using C#
https://stackoverflow.com/questions/46292
复制相似问题