Protobuf-net バイナリ シリアライザーを使用して、NHibernate の第 2 レベルのキャッシュを Enyim Memcached に接続するために、次のアセンブリを使用しました。
- NHibernate
- NHibernate.Caches.EnyimMemcached
- Enyim.Caching
- プロトブフネット
- protobuf-net.Enyim
最近、protobuf-net を EnyimMemcached に接続しているにもかかわらず、実際にはそのシリアライザーを使用していない可能性が高いことに気付きました。これは、すべてのエンティティが、プロパティに対応する順序付けられた Data/ProtoMembersのみでマークされているか[Serializable]
、どちらもマークされていないためです。適切な属性を追加した後 (または protobuf-net の RuntimeTypeModel.Default クラスに手動で登録した後)、memcache を直接操作すると、protobuf-net を EnyimMemcached と連携させることができます。[DataContract]
[ProtoContract]
ただし、型を protobuf-net に登録してデューデリジェンスを行ったとしても、NHibernate.Caches.EnyimMemcached 内のキャッシュにエントリを格納するため、NHibernate からのキャッシュエントリが実際に protobuf-net によってシリアル化されるとは思いません。DictionaryEntry
オブジェクト:
bool returnOk = client.Store(
StoreMode.Set, KeyAsString(key),
new DictionaryEntry(GetAlternateKeyHash(key), value),
TimeSpan.FromSeconds(expiry));
DictionaryEntry
[DataContract]
と の[DataMember(Order = xx)]
属性はありません。これは私が不思議に思う...
NHibernate の第 2 レベルのキャッシュに protobuf-net シリアライザーを適切に利用することはできますか?