Ncrawler是一个在codeplex上的.NET爬虫项目,项目是.net4.0的。里面充满了linq、lambda表达式。。。而我则习惯在.net2.0,所以代码阅读起来,真的是有点痛苦。没办法,一句话,死撑吧。另外发现一个linqbrige这个库,可以在.net2.0下实现linq to object的语法,支持lambda表达式,而且这个库的大小也只有几十kb,对于在2.0平台 的开发同胞们,对于一部分3.5,4.0的项目可以直接转换过来,改一个库引用就可以了,命名空间都一样,不过只是对于linq to obect的项目,而to sql ,to xml则不行。
言归正传,回到Ncrawler项目吧!
我准备按照爬虫的功能模块来分析,这样我觉得方面理解和记忆。(摸着石头过河吧,可能许多地方理解有误)
组件?扩展?服务?这3种概念有时候比较难以区分,我也不怎么明白。。。
就用作者的service[服务]吧。
Ncrawler用autofac这个ioc容器 的管理这些服务(aotufac这个中文资料很少,我也不理解,不做详细讨论)
程序里面的使用时如下:
注册模块:
using Autofac;
using Autofac.Core.Lifetime;
public static void Setup(params Module[] modules)
{
ContainerBuilder builder = new ContainerBuilder();
modules.ForEach(module => builder.RegisterModule(module));
Container = builder.Build();
}
取出:m_CrawlerQueue = m_LifetimeScope.Resolve<ICrawlerQueue>(parameters);
哎,扩展方法这玩意还真有点不适应~上面的代码就是从容器中取出插件的实例。。。没怎么看明白