适合C# Actor的消息执行方式(5):一个简单的网络爬虫
2010-09-30 20:50:14 来源:WEB开发网public interface ICrawlRequestHandler
{
void Crawl(Monitor monitor, string url);
}
在接受到上面的Crawl消息后,Crawler将去抓取指定的url对象,并将结果发还给Monitor。在这里我们要求报告Cralwer向Monitor报告“成功”和“失败”两种消息1:
public interface ICrawlResponseHandler
{
void Succeeded(Crawler crawler, string url, List<string> links);
void Failed(Crawler crawler, string url, Exception ex);
}
我们使用“接口”这种方式定义了“消息组”,把Succeeded和Failed两种关系密切的消息绑定在一起。如果抓取成功,则Crawler会从抓取内容中获得额外的链接,并发还给Monitor——失败的时候自然就发还一个异常对象。此外,无论是成功还是失败,我们都会把Crawler对象交给Monitor,Monitor会安排给Crawler新的抓取任务。
因此,Monitor和Cralwer类的定义大约应该是这样的:
public class Monitor : Actor<Action<ICrawlResponseHandler>>, ICrawlResponseHandler
Crawler实现
{
protected override void Receive(Action<ICrawlResponseHandler> message)
{
message(this);
}
#region ICrawlResponseHandler Members
void ICrawlResponseHandler.Succeeded(Crawler crawler, string url, List<string> links)
{
...
}
void ICrawlResponseHandler.Failed(Crawler crawler, string url, Exception ex)
{
...
}
#endregion
}
public class Crawler : Actor<Action<ICrawlRequestHandler>>, ICrawlRequestHandler
{
protected override void Receive(Action<ICrawlRequestHandler> message)
{
message(this);
}
#region ICrawlRequestHandler Members
void ICrawlRequestHandler.Crawl(Monitor monitor, string url)
{
...
}
#endregion
}
- ››适合做商品团购营销的网站
- ››适合所有浏览器hack的CSS技巧
- ››消息称中国移动即将获得iPhone 4销售权
- ››适合C# Actor的消息执行方式(1):Erlang中的模式...
- ››适合C# Actor的消息执行方式(2):C# Actor的尴尬...
- ››适合C# Actor的消息执行方式(3):中看不中用的解...
- ››适合C# Actor的消息执行方式(4):阶段性总结
- ››适合C# Actor的消息执行方式(5):一个简单的网络...
- ››适合C# Actor的消息执行方式(6):协变与逆变
- ››适合1-5个月经验的seo优化全过程分享
- ››消息称联通高层赴美谈引入iPhone4 将带WiFi
- ››消息称微软将在近期发布IE9 beta
更多精彩
赞助商链接