我有一个建筑问题。
假设我们有一个调度程序和许多子系统。其中一些子系统可以具有操作,应该能够由调度程序执行。
我们有两种方法来实现调度程序任务的注册。
一种方法是在每个子系统中都有一个名为 like 的方法RegisterSchedulerTasks
,该方法将在应用程序启动期间由应用程序中的引导程序调用。在这个方法中,我们将调用类似这样的静态Scheduler
类:
void Handler1(){
}
void Handler2(){
}
void RegisterSchedulerTasks()
{
Scheduler.RegisterHandler( "E1", Handler1 );
Scheduler.RegisterHandler( "E2", Handler2 );
}
"E1"
和"E2"
是任务的名称,将在调度程序配置中具有相应的设置。
另一种方法是使用例如 MEF。每个子系统都会导出一组ISchedulerTask
s,它不会强制注册这些任务。在应用程序的另一端,我们SchedulerTasksRegistry
将导入一组这些ISchedulerTask
s。
在所有方法中,我们都会在 config 中有一个映射,其中将包含每个任务的调度时间线,在两种方法中都通过其名称来标识。
我倾向于第二种方法,但没有足够的论据。可能唯一的论点是第一种方法意味着子系统的更高静态耦合。
我是对的,第二种方法更好吗?这些方法的论据是什么?