.net 调度器任务注册设计

.net 调度器任务注册设计,.net,architecture,mef,.net,Architecture,Mef,我有一个建筑问题 假设我们有一个调度器和许多子系统。这些子系统中的一些可以有操作,这些操作应该可以由调度器执行 我们有两种方法来实现调度器任务的注册 一种方法是在每个子系统中都有一个方法,称为像RegisterSchedulerTasks,该方法将在应用程序启动期间由应用程序中的引导程序调用。在这个方法中,我们将调用类似staticScheduler的类,如下所示: void Handler1(){ } void Handler2(){ } void RegisterSchedulerTas

我有一个建筑问题

假设我们有一个调度器和许多子系统。这些子系统中的一些可以有操作,这些操作应该可以由调度器执行

我们有两种方法来实现调度器任务的注册

一种方法是在每个子系统中都有一个方法,称为像
RegisterSchedulerTasks
,该方法将在应用程序启动期间由应用程序中的引导程序调用。在这个方法中,我们将调用类似static
Scheduler
的类,如下所示:

void Handler1(){
}

void Handler2(){
}

void RegisterSchedulerTasks()
{
  Scheduler.RegisterHandler( "E1", Handler1 );
  Scheduler.RegisterHandler( "E2", Handler2 );
}
“E1”
“E2”
是任务的名称,它们将在调度程序配置中具有相应的设置

另一种方法是使用MEF。 每个子系统将导出一组
isSchedulerTask
s,并且不会强制注册这些任务。 在应用程序的另一端,我们将有
schedulerTaskRegistry
,它将导入一组
isSchedulerTask
s

在所有方法中,我们在配置中都会有一个映射,它将包含每个任务的调度时间表,在两种方法中都通过其名称标识

我倾向于第二种方法,但没有足够的理由支持。可能唯一的论点是第一种方法意味着子系统的更高静态耦合


我说得对吗?第二种方法更好吗?这些方法的论点是什么?

这里我将使用“责任链”模式。这种模式

'通过为多个对象提供处理请求的机会,避免将请求的发送方耦合到接收方。链接接收对象并沿链传递请求,直到对象处理它为止。”

可以找到使用此模式的示例


我希望这能有所帮助。

我的问题不仅仅是关于调度程序。例如,对于一些工厂也可以问类似的问题-我们可以通过MEF隐式地构建这个工厂,它将搜索工厂返回的接口的所有可用实现,另一方面,我们可以使用某种硬编码开关强制创建这个工厂。对不起,我不清楚如何在我的案例中使用这种模式。你能解释一下吗?