【发布时间】:2011-06-11 17:21:38
【问题描述】:
我目前正在编写一个从互联网检索信息的网络爬虫。简化后看起来像这样。
数据访问项目
- 检索原始数据的对象
- 对象将原始数据解析为对象 (!!)
- 解析器返回的实体。
现在,我正在创建实际的解析器,我将像这样使用它:
using Application.DataAccess;
using Application.DataAccess.Entities;
namespace Application{
public class TestScraper{
public static ScrapeIt()
{
var source = DataAcces.Retriever.Retrieve("http://example.com");
DataAccess.Entities.Entity entity = DataAccess.Parser.Parse(source);
//Do stuf with source here.
}
}
}
如您所见,解析器返回一个实体。然而,这是在 DataAccess 命名空间中,然而,它没有任何意义......它是一个圆圈,我真的不知道如何解决这个问题。好吧,我可以想出一些东西,比如在这些层之间创建另一个层。
但我只想知道,你将如何解决这个问题。什么是好的(或最佳实践)。
【问题讨论】:
-
为什么您的检索器和解析器在数据访问命名空间中,在您来保存实体之前,它们肯定与数据访问无关吗?
-
抱歉,我没有看到圆圈。
-
@Beliskner 我试图将它与 SQL DAL 进行比较。从 SQL 服务器获取信息的函数通常在 DAL 中(类似于我的检索),将原始数据转换为可用对象的函数通常也在 DAL 中(类似于我的解析器)。