ما هي التقنيات التي يجب استخدامها للتعامل مع الكائنات في ذاكرة التخزين المؤقت ASP.NET لمنع المشكلات من وصول سلاسل روايات عمل ASP.NET المتعددة؟

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

سؤال

نظرًا لأن ASP.NET يحتوي على مؤشرات ترابط متعددة يتم تنفيذها في نفس الوقت.
لذلك إذا قام 2 مؤشرات الترابط بالوصول إلى كائن (بسيط أو معقد) حصلت عليه من ذاكرة التخزين المؤقت ASP.NET HTTPContext.
لا يمكن أن يؤدي هذا إلى مشاكل الدولة في هذا الكائن إذا حاول هذان theads تعديل/قراءته في نفس الوقت؟
إذن ما نوع الاحتياطات التي يجب أن أقوم بها؟
على سبيل المثال ، أفكر في قفل الكائن أثناء العمل معه؟ (هل هذا يسبب مشاكل في الأداء؟)
أو ربما عندما أسترجع بعض الكائنات من ذاكرة التخزين المؤقت ، يجب أن أقوم بإنشاء نسخة منه؟
أو ربما لا أحتاج للقلق بشأن هذه المشكلة على الإطلاق؟
شكرًا

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

المحلول

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

نصائح أخرى

في غضون 5 سنوات من مشاريع تطوير ASP.NET ، لم أجد أبدًا موقفًا كان فيه هذا مصدر قلق.

أن يقال ... أنت بالتأكيد لن تواجه مشكلة قراءة أي صنف. إذا كان لديك كائن تريد تعديله كثيرًا ، فلماذا في ذاكرة التخزين المؤقت لتبدأ؟ إذا لم تكن بحاجة إلى تعديله كثيرًا ، فلن يكون قفل الكائن مشكلة في الأداء.

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