我已经使用以下程序集使用Protobuf-net二进制序列化器将NHibernate二级缓存与Enyim Memcached连接起来:
最近我注意到,尽管使用EnyimMemcached连接protobuf-net,我可能实际上并没有使用该序列化程序,因为我的所有实体都只标有[Serializable]
而且[DataContract]
或{ {1}}具有相应的有序数据/ ProtoMembers属性。当我在添加适当的属性后直接与memcache交互(或者使用protobuf-net的RuntimeTypeModel.Default类手动注册它们)时,我可以使用protobuf-net与EnyimMemcached一起工作。
然而,即使我在使用protobuf-net注册我的类型时做了尽职调查,我也不认为来自NHibernate的任何缓存条目实际上都会被protobuf-net序列化,因为NHibernate.Caches.EnyimMemcached存储条目[ProtoContract]
个对象中的缓存:
DictionaryEntry
bool returnOk = client.Store(
StoreMode.Set, KeyAsString(key),
new DictionaryEntry(GetAlternateKeyHash(key), value),
TimeSpan.FromSeconds(expiry));
没有DictionaryEntry
和[DataContract]
属性。这让我很奇怪......
我是否可以正确使用protobuf-net序列化程序进行NHibernate二级缓存?
答案 0 :(得分:0)
由于没有人回答你的问题,我不妨在这里说两句话。我不太了解Memcached作为二级缓存,但有强大的缓存解决方案,需要最少的代码更改才能开始用作二级缓存,并且序列化由缓存处理。您可以使用NCache as a level 2 cache for NHibernate