.net 调度器任务注册设计
我有一个建筑问题 假设我们有一个调度器和许多子系统。这些子系统中的一些可以有操作,这些操作应该可以由调度器执行 我们有两种方法来实现调度器任务的注册 一种方法是在每个子系统中都有一个方法,称为像.net 调度器任务注册设计,.net,architecture,mef,.net,Architecture,Mef,我有一个建筑问题 假设我们有一个调度器和许多子系统。这些子系统中的一些可以有操作,这些操作应该可以由调度器执行 我们有两种方法来实现调度器任务的注册 一种方法是在每个子系统中都有一个方法,称为像RegisterSchedulerTasks,该方法将在应用程序启动期间由应用程序中的引导程序调用。在这个方法中,我们将调用类似staticScheduler的类,如下所示: void Handler1(){ } void Handler2(){ } void RegisterSchedulerTas
RegisterSchedulerTasks
,该方法将在应用程序启动期间由应用程序中的引导程序调用。在这个方法中,我们将调用类似staticScheduler
的类,如下所示:
void Handler1(){
}
void Handler2(){
}
void RegisterSchedulerTasks()
{
Scheduler.RegisterHandler( "E1", Handler1 );
Scheduler.RegisterHandler( "E2", Handler2 );
}
“E1”
和“E2”
是任务的名称,它们将在调度程序配置中具有相应的设置
另一种方法是使用MEF。
每个子系统将导出一组isSchedulerTask
s,并且不会强制注册这些任务。
在应用程序的另一端,我们将有schedulerTaskRegistry
,它将导入一组isSchedulerTask
s
在所有方法中,我们在配置中都会有一个映射,它将包含每个任务的调度时间表,在两种方法中都通过其名称标识
我倾向于第二种方法,但没有足够的理由支持。可能唯一的论点是第一种方法意味着子系统的更高静态耦合
我说得对吗?第二种方法更好吗?这些方法的论点是什么?这里我将使用“责任链”模式。这种模式 '通过为多个对象提供处理请求的机会,避免将请求的发送方耦合到接收方。链接接收对象并沿链传递请求,直到对象处理它为止。” 可以找到使用此模式的示例
我希望这能有所帮助。我的问题不仅仅是关于调度程序。例如,对于一些工厂也可以问类似的问题-我们可以通过MEF隐式地构建这个工厂,它将搜索工厂返回的接口的所有可用实现,另一方面,我们可以使用某种硬编码开关强制创建这个工厂。对不起,我不清楚如何在我的案例中使用这种模式。你能解释一下吗?