Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.NET应用程序的插件设计_.net_Plugins_Interface Design - Fatal编程技术网

.NET应用程序的插件设计

.NET应用程序的插件设计,.net,plugins,interface-design,.net,Plugins,Interface Design,我正在考虑用C#(目前是遗留的VB6代码)重写应用程序的一部分。我开始学习的模块负责将各种系统中的数据导入我们的数据库。每年大约有5-6次,新客户要求我们为他们使用的系统编写新的导入。目前,这要求我们为应用程序中添加的每个新导入选项发布新版本的软件 重写的目标之一是使应用程序支持插件。每个新导入都可以成为一个独立的程序集,宿主应用程序将识别该程序集并允许最终用户与之交互。这有望在某种程度上简化生活,因为我们可以简单地将一个新程序集放到目录中,并让它被主(主机)应用程序识别和使用 我正在努力解决的

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

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

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


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

我建议您查看托管应用程序.NET3.5附带的插件框架。Net 3.5还发布了一些示例和工具。Net 3.5具有system.Addin命名空间

此线程还提供了一些有关旧版本框架的有用信息:

h

有关理论,请查看企业应用程序体系结构的in-martin-fowlers模式

有关一个有趣的示例,请参阅本教程: