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

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

 2010-09-30 20:50:14 来源:WEB开发网   
核心提示:之前的几篇文章大都在摆一些“小道理”,有经验的朋友容易想象出来其中的含义,适合C# Actor的消息执行方式(5):一个简单的网络爬虫,不过对于那些还不了解Actor模型的朋友来说,这些内容似乎有些太过了,并向其发送一个消息,让其开始工作,此外,乒乓测试虽然经典

之前的几篇文章大都在摆一些“小道理”,有经验的朋友容易想象出来其中的含义,不过对于那些还不了解Actor模型的朋友来说,这些内容似乎有些太过了。此外,乒乓测试虽然经典,但是不太容易说明问题。因此,今天我们就来看一个简单的有些简陋的网络爬虫,对于Actor模型的使用来说,它至少比乒乓测试能够说明问题。对了,我们先来使用那“中看不中用”的消息执行方式。 功能简介

这个网络爬虫的功能还是用于演示,先来列举出它的实现目标吧:

给出一个初始链接,然后抓取它的HTML并分析出所有html链接,然后继续爬,不断爬,直到爬完所有链接为止。

多线程运行,我们可以指定由多少个爬虫同时工作。

多个爬虫组成一个“工作单元”,程序中可以同时出现多个工作单元,工作单元之间互相独立。

能简化的地方便简化,如一切不涉及任何永久性存储(也就是说,只使用内存),没有太复杂的容错机制。

的确很简单吧?那么,现在您不妨先在脑海中想象一下,在不用Actor模型的时候您会怎么实现这个功能。然后,我们就要动手使用ActorLite这个小类库了。

协议制定

正如我们不断强调的那样,在Actor模型中唯一的通信方式便是互相发送消息。于是使用Actor模型的第一步往往便是设计Actor类型,以及它们之间传递的消息。在这个简单的场景中,我们会定义两种Actor类型。一是Monitor,二是Crawler。一个Monitor便代表一个“工作单元”,它管理了多个爬虫,即Crawler。

Monitor将负责在合适的时候创建Crawler,并向其发送一个消息,让其开始工作。在我们的系统中,我们使用ICrawlRequestHandler接口来表示这个消息:

1 2 3 4 5 6  下一页

Tags:适合 Actor 消息

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