التخزين المؤقت لـ AppFabric - ما هي متطلبات التسلسل والتسلسل للكائن؟

StackOverflow https://stackoverflow.com/questions/3732050

سؤال

المشكلة: عند تخزين مثيل للفصل وإعادته على الفور من ذاكرة التخزين المؤقت ، أحصل على الكائن (ليس فارغًا) ، ولكن جميع خصائصه / حقوله لاغية أو افتراضية.

    _cacheHelper.PutInCache("testModuleControlInfoOne", mci);
    //mci has populated fields

    var mciFromCacheOne = _cacheHelper.GetFromCache("testModuleControlInfoOne");
    //mciFromCacheOne now has null or default fields

لذلك أظن أن الطريقة التي يتم بها تنظيم الكائن هي المشكلة ولا يقوم AppFabric بتسلسل الكائن بشكل صحيح لسبب ما.

عندما أستخدم طريقة التسلسل التالية ، أحصل على الكائن مع جميع الخصائص / الحقول كما كانت قبل التسلسل.

    public T SerializeThenDeserialize<T>(T o) where T : class
    {
            BinaryFormatter bf = new BinaryFormatter();

            using (MemoryStream ms = new MemoryStream())
            {
                bf.Serialize(ms, o);

                ms.Position = 0;

                return (T)bf.Deserialize(ms);
            }
    }

كيف يمكن للكائن تخصيصًا وإلغاء التسلسل بشكل صحيح باستخدام التنسيق الثنائي وعدم فعل نفس الشيء بالضبط عن طريق التخزين المؤقت؟

هل واجه أي شخص هذا أو هل لدى أي شخص أي اقتراحات أو نصائح حول ما الذي يجب البحث عنه بشكل عام؟

هل كانت مفيدة؟

المحلول

حسنًا ، وجدت ذلك.

نفذ الكائن ixmlserializable لذلك استخدم AppFabric أنه بدلاً من التسلسل العادي.

إن تشغيله من خلال جهاز XMLSerializer (بدلاً من ثنائي الشكل) يعطي نفس الحقول الفارغة التي كنت أعاني منها.

يبدو أن تطبيق IXMLSerializable لديه قضايا.

نصائح أخرى

أعتقد أنه عند التسلسل إلى XML (باستخدام IxmlSerializable) ، يتم تجاهل الحقول الخاصة للكائن ، وهذا قد يكون السبب في أن كائنك غير مكتمل عند الاسترجاع.

سيؤمن استخدام التسلسل الثنائي تأمين الكائن بأكمله (بما في ذلك الإشارات إلى كائنات أخرى).

قد ترغب في النظر إلى IDataCacheObjectSerializer

http://msdn.microsoft.com/en-us/library/windowsazure/hh552969.aspx

التخزين المؤقت AppFabric - هل يمكنني تحديد نمط التسلسل المستخدم لجميع الكائنات؟

(نعم أدرك أن هذا السؤال كان لك أيضًا :-)

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top