我有一个架构问题。
假设我们有一个调度程序和许多子系统。其中一些子系统可以具有应该由调度程序执行的操作。
我们有两种方法来实现调度任务的注册。
一种方法是在每个子系统中都有一个方法,称为RegisterSchedulerTasks
,它将在应用程序启动期间由应用程序中的引导程序调用。在这个方法中,我们将像这样调用静态Scheduler
类:
void Handler1(){
}
void Handler2(){
}
void RegisterSchedulerTasks()
{
Scheduler.RegisterHandler( "E1", Handler1 );
Scheduler.RegisterHandler( "E2", Handler2 );
}
"E1"
和"E2"
是任务的名称,在调度程序配置中具有相应的设置。
另一种方法是使用例如MEF。
每个子系统都将导出一组ISchedulerTask
,并且不会强制注册这些任务。
在应用程序的另一端,我们将SchedulerTasksRegistry
,它将导入一组这些ISchedulerTask
。
在所有方法中,我们将在配置中包含一个映射,其中包含每个任务的调度时间表,在两个方法中都按其名称标识。
我倾向于第二种方法,但没有足够的论据。可能唯一的论点是第一种方法意味着更高的子系统静态耦合。
我是对的,第二种方法更好吗?这些方法的论据是什么?
答案 0 :(得分:0)
在这里,我将使用“责任链”模式。这种模式
'通过为多个对象提供处理请求的机会,避免将请求的发送者耦合到接收者。链接reciving对象并沿着链传递请求,直到对象处理它。'
可以找到使用此模式的示例here。
我希望这会有所帮助。