【发布时间】:2010-04-01 17:57:41
【问题描述】:
我有这个包含其他域对象的巨大域对象(比如父级)。通过查询数据库来“创建”这个父对象需要很多时间(好的,我们正在优化数据库)。所以我们决定使用 memcached 缓存它(具体是northscale)
所以我检查了我的代码并将所有类(我认为)标记为[Serializable],但是当我将它添加到缓存中时,我看到在我的 VS.net 输出窗口中抛出了一个序列化异常。
var cache = new NorthScaleClient("MyBucket");
cache.Store(StoreMode.Set, key, value);
这是个例外:
A first chance exception of type 'System.Runtime.Serialization.SerializationException' occurred in mscorlib.dll
所以我的猜测是,我没有将所有类都标记为[Serializable]。我没有使用任何第三方库,可以将任何类标记为[Serializable],但是当缓存尝试序列化对象时,如何找出哪个类失败了?
Edit1:casperOne cmets 让我思考。我能够使用 Microsoft Cache Application Block 缓存这些域对象,而无需标记它们[Serializable],但不能使用 NorthScale memcached。这让我觉得他们的实现可能与他们的实现有关,但出于好奇,我仍然有兴趣在尝试将对象添加到 memcached 时找到失败的地方
【问题讨论】:
-
@Ram:你有更多关于northscale要求的信息吗?这很可能是他们的问题,不一定是框架的问题,因此有关他们要求的更多信息将有很大帮助。
-
@casperOne:我们用“缓存”字符串做了一个概念证明,它可以工作。当试图缓存域对象时,那就是它失败的时候。我在想这是我这边的事情。另请参阅 Edit1
标签: c# serialization caching memcached