تكافح مع الاستخدام المقبول من الدورة متغير في ASP.NET

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

  •  08-07-2019
  •  | 
  •  

سؤال

حاولت إبعاد نفسي من تشذيب أعضاء كل شيء في الدورة متغير في ASP.NET (لقد أتيت من ويندوز خلفية البرمجة) و عموما أنا توقفت تماما صراحة تخزين أي شيء في الدورة متغير.أي شخص يمكن أن تعطي بعض المبادئ التوجيهية بشأن ما تشعر مقبولة يستخدم من الدورة متغير ؟

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

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

المحلول

أنا لست مستاء من إعادة الأعمال الكائن من قاعدة البيانات في ما بعد الظهر إلى حفظ التغييرات التي تطرأ على المستخدمين.

هذا الكائن يجب أن يأتي من مكان ما على أن إعادة النشر و محدودية النفقات العامة المرتبطة سريعة DB الاتصال مثل الاستيلاء على كائن معين هو على الأرجح أفضل رهان.

الخيارات الخاصة بك للحصول على هذا الكائن الأعمال مرة أخرى في الذاكرة في ما بعد الظهر:

  • الحصول عليه من DB مرة أخرى.سلبيات:بعض (الصغيرة) ديسيبل إضافية علوية
  • حفظه في جلسة المستخدم.سلبيات:يحتمل أن تكون لا تزال ضرب قاعدة البيانات (إذا كانت الدورة يتم تخزينها هناك) أو استخدام الكثير من الذاكرة (إذا الدورة يتم تخزينها هناك) ويمكن تخزين نسخ متعددة إذا كان العديد من المستخدمين قد يكون الوصول إلى هذا الكائن و الأسوأ من ذلك كله ، أن الدورة كائن يمكن أن يكون ذهب مع المستخدم يضرب تقدم إذا ASP.NET تطهير ذلك لأي سبب من الأسباب.
  • من ذاكرة التخزين المؤقت.سلبيات:يستخدم بعض ذاكرة إضافية و سوف لا يزال لديك للذهاب إلى ديسيبل إذا كان التخزين المؤقت لا وجود لها, ولكن أود أن وضع الأموال الكبيرة أن أي التطبيق لديه العديد من أكبر المآزق استخدام ذاكرة التخزين المؤقت على.
  • Viewstate.هل يمكن تخزين الكائن في Viewstate (الذي يرسله إلى العميل ثم العميل المشاركات مرة أخرى).سلبيات:أسوأ الحل في رأيي.إضافة إلى Viewstate يعني انها تسير على سلك المصب و المنبع و الأسباب حجم الصفحة أن تكون ضخمة.الدورة ليست أفضل ، ولكن Viewstate هو الشيطان.

نصائح أخرى

هل لديك العديد من المستخدمين؟

وتخزين الأشياء عملك في جلسة قد تكون على ما يرام، إذا كان موقعك هو انخفاض حجم.

إذا كنت تستخدم SQL Server لتخزين جلسة العمل الخاصة بك، ثم كنت تحمل على نحو فعال الكائن عملك من قاعدة البيانات في ما بعد الظهر على أي حال.

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

:)

إعادة كائن من قاعدة البيانات قبل التحديث هو يحتمل أن تكون خطرة جدا.يمكنك في نهاية المطاف في عداد المفقودين أي التزامن الانتهاكات.

على سبيل المثال إذا كان هذا يحدث تدفق:

  1. عرض شاشة تحرير العملاء 1 على الكمبيوتر 1
  2. عرض شاشة تحرير العملاء 1 على الكمبيوتر 2
  3. التعامل مع تحديث العملاء 1 من 1
  4. التعامل مع تحديث العملاء 1 من 2

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

لذلك هذا النوع من الوضع أشعر أن وضع الكيان الأصلي في الدورة (أو في حقل مخفي على شكل) هو تماما الشيء الصحيح الذي ينبغي القيام به إذا كنت تهتم التزامن.

ناهيك عن الكثير من الناس لا أحب ضرب قاعدة البيانات مرة أخرى إضافية قراءة...

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