Design patterns 批处理和批量处理模式
我已经从数据库中查询了数据,看起来非常像下面的Design patterns 批处理和批量处理模式,design-patterns,batching,Design Patterns,Batching,我已经从数据库中查询了数据,看起来非常像下面的 Job Site File List ------------------------------- 1 SiteA file2.txt 2 2 SiteB file2.txt 2 3 SiteA file23.txt 23 4 SiteC file2.txt 2 5 SiteB file12.txt 12 6 SiteA file29.txt 29 7 SiteB
Job Site File List
-------------------------------
1 SiteA file2.txt 2
2 SiteB file2.txt 2
3 SiteA file23.txt 23
4 SiteC file2.txt 2
5 SiteB file12.txt 12
6 SiteA file29.txt 29
7 SiteB file28.txt 28
我应该为每个站点(站点A、B和C)启动实例,然后处理,例如,对于站点A,处理file2.txt、file23.txt和file29.txt。这种“处理”可能以某种顺序发生,但必须是一个接一个(而不是同时发生)
因此,我的第一项任务是整理站点,并为每个站点创建实例。我该怎么做
PS:我想处理部分我应该使用某种迭代器模式…我更喜欢任何现代编译器语言中的解决方案……比如C++,VB,C++等等……< /p> < p>我不确定我是否已经理解了你想要达到的,但是我认为你需要做的是:
站点的不同值
2.1. 实例化站点
2.2. 获取
文件的所有相关值
并处理每个值var siteNames=data.Select(d => d.Site).Distinct();
foreach(var siteName in siteNames) {
var site=new Site(siteName); //Or use a factory method, a sites list, etc
var files=data.Where(d => d.Site==site).Select(d => d.File);
foreach(var file in Files) {
site.ProcessFile(file);
}
}
我将有一个visitor对象,其中包含一个哈希表,该哈希表遍历每个条目 对于每个条目: -如果它不存在于哈希表中,访问者对象将为它实例化一个站点。 -然后,对象将获取文件并对其进行处理
这样做的好处是,您可以一次完成分组和处理。我赞同每个站点都有一名工作人员的想法 另一个问题是应用程序状态
当你的应用程序启动时,它是否关心之前发生的事情?当一些文件被处理时,考虑一个应用程序崩溃。重新启动时,应用程序是否会再次处理文件?这是一个问题吗?不能使用任何类型的循环…这是y我发现迭代器模式是最好的工作…你也可以显示相同内容的非linq版本。。。