我使用以下程序集将NHibernate 2级缓存与Enyim连接起来,使用Protobuf二进制序列化程序:
最近我注意到,尽管使用EnyimMemcached连接了protobuf-net,但我很可能实际上没有使用该序列化程序,因为我的所有实体都只使用[Serializable]标记,而没有为属性标记[DataContract]或[ProtoContract]相应的有序数据/ProtoMembers。当我在添加适当的属性后直接与memcache交互时,我可以让protobuf与EnyimMemcached一起工作(或者手动将它们注册到protobuf的RuntimeTypeModel.Default类中)。
然而,即使我尽了应有的努力向protobuf-net注册我的类型,我也不认为来自NHibernate的任何缓存条目实际上都会被protobuf-net序列化,因为NHibernate.Caches.EnyimMemcached在DictionaryEntry对象中存储缓存中的条目:
bool returnOk = client.Store(
StoreMode.Set, KeyAsString(key),
new DictionaryEntry(GetAlternateKeyHash(key), value),
TimeSpan.FromSeconds(expiry));DictionaryEntry没有[DataContract]和[DataMember(Order = xx)]属性。这让我好奇..。
我甚至可以正确地利用NHibernate二级缓存的protobuf-net序列化程序吗?
发布于 2013-05-21 11:35:15
既然没有人回答你的问题,我不妨在这里说两句。我不太了解Memcached作为第二级缓存的情况,但是有一些强大的缓存解决方案需要最少的代码更改才能开始作为二级缓存使用,而序列化则由缓存处理。您可以使用NCache作为NHibernate的二级缓存
https://stackoverflow.com/questions/15959821
复制相似问题