2

我用下面的組件使用protobuf網二進制序列與Enyim Memcached的掛鉤NHibernate的2級緩存:NHibernate的MemCached W/Protobuf-net.Enyim - 它實際上工作?

  • NHibernate的
  • NHibernate.Caches.EnyimMemcached
  • Enyim.Caching
  • protobuf網
  • 的protobuf-net.Enyim

它最近來我在張力說,儘管與EnyimMemcached掛鉤protobuf網,我可能沒有實際使用串行作爲我的所有實體均標有剛[Serializable]也不[DataContract][ProtoContract]具有相應的有序數據/ ProtoMembers的性質。當我添加相應的屬性(或者使用RuntimeTypeModel.Default類的protobuf-net手動註冊它們)後,我可以直接與EnyimMemcached一起使用protobuf-net與memcache進行交互。但是,即使我在使用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網串行?

回答

0

因爲沒有人回答你的問題,我還不如給在我這裏兩位。我對Memcached作爲第二級緩存瞭解不多,但是那裏有強大的緩存解決方案,需要最少的代碼更改才能開始用作二級緩存,而序列化則由緩存處理。您可以使用NCache as a level 2 cache for NHibernate