我必须开发一个监控传感器信息的系统,但将来可能会添加许多传感器.
也就是说,这个想法将是开发一个由应用程序框架组成的系统.传感器(每个都具有其通信和数据呈现特性)将作为插件添加到系统中.
我如何在C#上编写代码?是组件驱动开发的一个例子吗?我应该使用动态库吗?
解决方法
C#有很多ad-hoc插件系统.一个描述在
Plugin Architecture using C#(
The Code Project).一般的方法是主机应用程序发布具有接口的程序集.它通过一个文件夹枚举,并找到定义一个实现其接口并加载它们并实例化类的类的程序集.
实际上你想做更多的事情.如果主机应用程序定义了两个接口(IHost和IPlugIn),则最好. IHost界面提供插件可以订阅的服务. IPlugIn构建了一个IHost.
要加载插件,你应该做的不仅仅是一个插件.您应该枚举所有可加载的插件.构建它们.问他们是否可以跑.请他们将API导出到主机中.请他们从主机导入API.插件应该能够询问其他插件的存在.
这样,插件可以通过提供更多的API来扩展应用程序.
在世界最后,你应该警告插件,他们将要消失.然后把它们拿出来
这将给你一个可以在一个很小的框架中编写的应用程序,如果你想要的话可以完全在插件中实现.
作为一个额外的好处,您还应该使其在插件文件夹中解决插件的快捷方式.这可以让您编写应用程序并将其传递给其他人.他们可以在其开发环境中创建一个插件,在应用程序的插件文件夹中创建一个快捷方式,而不必担心在每次编译之后部署.