如何保持对象的独特性

时间:2014-04-14 08:24:39

标签: c#-4.0

我在Common.DLL中有一个静态DataTable(带有80k记录),而Common.DLL由10个Windows服务引用。因此,我不需要在内存中拥有10个DataTable副本,而是需要将其作为1个副本并将所有服务指向该数据源。这种方法可行吗?

3 个答案:

答案 0 :(得分:5)

鉴于服务至少会使用不同的AppDomain,很可能是不同的进程,在所有这些服务之间共享相同的数据会很棘手。

我个人建议你不要担心 - 除非每条记录实际上都很大,否则80K的记录仍然相当小。

可能可能拥有第11个服务,其中拥有数据,然后与其他服务通信。但是,这引入了很多复杂性而收效甚微。

可能节省内存的一种方法是使用List<T>作为自定义类型,而不是DataTable - 可能效率更高,而且几乎可以肯定在内部使用代码。如果你真的需要 DataTable无论你用它做什么都没有帮助,但我个人试图避免这样做......

答案 1 :(得分:0)

您可以创建一个本地托管的WCF service,并将80k记录读入内存。

然后,您将在WCF服务上定义一个API,该API包含适用于您的10个Windows服务需要进行的任何调用的方法。

这样做会增加您的解决方案的复杂程度,但这可能是不需要的。

答案 2 :(得分:-1)

使用Singleton模式。这是一个带有C#的detailed tutorial