我有一个架构问题。
假设我们有一个调度器和许多子系统。这些子系统中的一些可以具有应该能够由调度器执行的操作。
我们有两种方法来实现调度器任务的注册。
一种方法是在每个子系统中都有一个方法,称为RegisterSchedulerTasks,它将在应用程序启动期间由应用程序中的引导程序调用。在此方法中,我们将调用类似静态Scheduler类的内容,如下所示:
void Handler1(){
}
void Handler2(){
}
void RegisterSchedulerTasks()
{
Scheduler.RegisterHandler( "E1", Handler1 );
Scheduler.RegisterHandler( "E2", Handler2 );
}"E1"和"E2"是任务的名称,在调度程序配置中具有相应的设置。
另一种方法是使用,例如,MEF。每个子系统将导出一组ISchedulerTask,并且不会强制注册这些任务。在应用程序的另一端,我们将使用SchedulerTasksRegistry,它将导入一组ISchedulerTask。
在所有方法中,我们都会在config中有一个映射,其中包含每个任务的调度时间表,在两种方法中都通过其名称进行标识。
我倾向于第二种方法,但没有足够的理由支持它。可能唯一的论点是,第一种方法意味着子系统的静态耦合度更高。
对吗,第二种方法更好吗?这些方法的论据是什么?
发布于 2013-07-24 16:54:51
在这里,我将使用“响应链”模式。此模式
‘通过给多个对象处理请求的机会来避免将请求的发送者耦合到接收者。将接收到的对象链接起来,并沿链传递请求,直到对象处理它为止。
使用此模式的一个示例可以在here中找到。
我希望这能帮到你。
https://stackoverflow.com/questions/17829020
复制相似问题