1

我正在开发一个以大约 4 个基本实体为核心的多线程应用程序

例如

 public class Album
{
    public ICPN ICPN { get; set; }
    public string Title { get; set; }
    public string Label { get; set; }
    public string PLine { get; set; }
    public string CLine { get; set; }


    public string Genre { get; set; }
    public string SubGenre { get; set; }

    public string Artist { get; set; }
    public int NumTracks { get; set; }
    public int NumVolumes { get; set; }

    public IList<ITerms> Terms { get; set; }

}

我有一个 4 步流程,我使用带有 BlockingCollections 的生产者/消费者模式来管理这些流程。这是一条生产线,一旦完成,我会修改对象的状态,将统计信息和队列复制到下一个进程队列中,等待下一个进程/任务执行。

我正处于架构设计的关键时刻,我是否需要考虑将一些 BlockingCollections 序列化到 DB,或者我是否可以在高端服务器上的 Pipe 中运行大约 1000 万个上述类型的对象。

我有一个队列专用于每个进程的统计信息,即 UI 的 Timetaken/Success 或者我应该考虑将这些信息与对象一起存储吗?

速度/效率在此过程中至关重要。

有什么方法可以计算内存需求,或者这是一个糟糕的情况,看看

更新在这个阶段,我不需要为崩溃等保存数据,因为元数据对象被修改并写入磁盘......即未处理的文件夹/已处理的文件夹

4

1 回答 1

0

您并没有真正描述您的应用程序的形式因素,所以我首先要说这取决于。

如果您的应用程序需要重新启动,或者如果您的应用程序中存在错误的可能性很小,那么我建议您将实时数据保存到某种形式的数据存储(数据库、文件等)中。在飞行中。当然,这仅在您不想丢失数据的情况下才重要。

编辑:考虑到您的编辑,我认为这不是必需的,除非您想保存任何先前数据处理的结果。

于 2011-12-13T00:57:14.333 回答