我正在开发一个简单的应用程序,它应该能够使用插件架构处理不同的任务,因此每个插件都是一个DLL库文件,并包含一个实现提供的接口的类,如下所示。
public interface ITaskProcessor
{
void Execute(FileStream input, FileStream output);
}
我认为只有输入文件存在时才会调用某个插件的Execute
方法,所以我在插件架构中创建了以下类。
public class TaskProcessorContext
{
private ITaskProcessor TaskProcessorInstance;
// ...
void Execute(string inputDataFilename, string outputDataFilename)
{
using (FileStream input = File.OpenRead(inputDataFilename), output = new FileStream(outputDataFilename, FileMode.Create))
{
this.TaskProcessorInstance.Execute(input, output);
}
}
}
我的应用程序的整体功能应该提供BasicHttpBinding
Web服务接收包含任务的文件以及应该处理任务的插件的唯一名称:
Dictionary
; 如何在WCF服务和处理任务的线程之间管理此通信?