Kigg项目分析 -- 2.背后的故事

本文分析了Kigg项目的后台处理机制,详细介绍了通过GlobalApplication类的OnStart方法中的Bootstrapper.Run()启动后台任务的过程。利用IOC方式装载并执行实现了IBootstrapperTask和IBackgroundTask接口的任务类。

Kigg这个项目在启动的时候,同时干了很多的是,如创建默认用户,加载后台事件等。到目前为止,我还不能分析出每个事件或者默认功能的作用。在这里只是对加载的机制做以分析。如果能启示大家,我就很高兴的了。

希望在大家还记得在上篇文章中的提到的GlobalApplication类,就是Global.asax.cs文件。在OnStart方法中的Bootstrapper.Run()。这里就是后台处理的开始。这个方法只有一句话IoC.ResolveAll<IBootstrapperTask>().ForEach(t => t.Execute());用一个IOC的方式装载在配置文件中实现了IBootstrapperTask的方法,并启动每个类的Execute()方法用来执行该类的操作。其中StartBackgroundTasks类(也是实现IBootstrapperTask的)的Execute()又装载和执行了实现IBackgroundTask的类,这还是一个以IOC方式装载和执行的操作。

 IBackgroundTask接口中,其实只是指定了启动,停止和标记该服务的运行状态的标记。大家可以这样理解,所谓启动就是在一些事件上注册处理方法,而停止就是删除这些方法的注册。例如PingServer类在它的启动方法中是这样写的:

_storySubmitToken = Subscribe<StorySubmitEvent, StorySubmitEventArgs>(StorySubmitted);

这就是说项StorySubmitEvent注册方法StorySubmitted其参数为StorySubmitEventArgs;而停止方法则是:

Unsubscribe<StorySubmitEvent>(_storySubmitToken);

意思就是解除StorySubmitted对StorySubmitEvent注册。

这就是Kigg项目后台处理的基本原理,欢迎指正!

转载于:https://www.cnblogs.com/yriyr/archive/2010/10/10/1847299.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值