WEB开发网
开发学院软件开发C语言 适合C# Actor的消息执行方式(5):一个简单的网络... 阅读

适合C# Actor的消息执行方式(5):一个简单的网络爬虫

 2010-09-30 20:50:14 来源:WEB开发网   
核心提示: publicinterfaceICrawlRequestHandler{voidCrawl(Monitormonitor,stringurl);}在接受到上面的Crawl消息后,Crawler将去抓取指定的url对象,适合C# Actor的消息执行方式(5):一个简单的网络爬虫(2),并将结果发

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 
{ 
  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 
} 
Crawler实现

上一页  1 2 3 4 5 6  下一页

Tags:适合 Actor 消息

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接