我想知道是否有一个建立模式来控制我的应用程序将拥有的流程。
简单地说,它应该是这样的:
我们会说有几个处理步骤 PreprocessingOne,PreprocessingTwo,PreprocessingThree和FinalProcessing。
当然,我们不控制用户提供的文件 - 他们需要不同数量的预处理步骤。
由于我的消息处理程序服务将位于单独的API中,因此出于性能原因,我不想仅仅为了返回“无法处理”或“不需要处理”而调用它们。
同样地,我不想在服务之间传递上传的文件。
理想情况下,我想通过评估内容并仅插入有意义的消息处理程序来动态设计文件的流。
我说'倒置'管道,因为我不想从A到Z,而是想从Z开始检查哪些阶段,只插入最后一个。
因此,如果上传的文件立即符合FinalProcessing
,则流程只是一个元素。
如果文件需要从PreprocessingTwo
开始,则流程为PreprocessingTwo
> PreprocessingThree
> FinalProcessing
所以,我以为我可以实现类似的东西,但我不确定细节。
public interface IMessageHandler
{
void Process(IFile file);
}
public interface IContentEvaluator
{
IList<IMessageHandler> PrepareWorkflow(IFile file);
}
public interface IPipelineExecutor
{
void ExecuteWorkflow(IList<IMessageHandler> workflow, IFile file);
}
然后在应用程序中
public void Start(IFile newFile)
{
var contentEvaluator = new ContentEvaluator(this.availableHandlers); // would be DI
var workflow = contentEvaluator.PrepareWorkflow(newFile);
this.executor.ExecuteWorkflow(workflow, newFile);
}
您能否建议,推荐一些方法或进一步阅读?