كيفية منع فقدان البيانات في تطبيق .NET بسبب انقطاع التيار الكهربائي المفاجئ؟

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

  •  09-09-2019
  •  | 
  •  

سؤال

نحن نتطور تطبيق البيع بالتجزئة (ويندوز).

أحد العميل يسأل "ما سيحدث للبيانات الحالية التي تتم معالجتها في التطبيق عندما انفجرت الطاقة فجأة؟"، هل سيتم تطبيق التطبيق من استعادة البيانات غير المحفوظة؟ "

أنا أتساءل، كيف يمكن تضمين هذه الميزة في تطبيق .NET؟

يمكن أن يساعدني البعض، ما الذي يجب القيام به لهذا؟

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

المحلول

أولا، انظر إلى UPS (امدادات الطاقة غير القابلة للتفاعل)

ثانيا، انظر إلى إنشاء المعاملات المستمرة والمعاملات التي ستوفر مبكرا وغالبا ما، ولكن لا تلتزم حتى تخبرها بذلك. هذا يتجاوز القليل من المعاملات النموذجية في Tsql.

نصائح أخرى

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

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

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

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

عند بدء تشغيل التطبيق اكتشاف ما إذا كان هناك ملف معلق، وقدم خيار التعافي. قم بتحميل البيانات المحفوظة في الملف مناسب.

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

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

إذا قمت بتدوين قاعدة البيانات الخاصة بك أو تنسيقات الملفات الخاصة بك، فلديك بعض العمل يقطعنا عليك اعتمادا على تنسيق الملف الخاص بك.

سيتم حل فئة PowerFailreException هذا. في الواقع مجرد الحفاظ على السلطة مع ups. الخيار الآخر الوحيد هو حقا الحفاظ على الذرية لمعاملات قاعدة البيانات.

قد ترغب في التفكير في استخدام التطبيق الخاص بك sqlite..

لديهم بعض المعلومات العظيمة على بهم عند استخدام الصفحة.

بعض النقاط التي تبرز هي:

  • تحدث التحديثات بشكل جذري حيث يتم تنقيح محتوى التطبيق

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

أبحث عن خيار مماثل للتطبيق الذي سأقوم به سيتم استخدامه في بلد عالمي ثالث حيث تخرج السلطة في كثير من الأحيان طوال اليوم .... يبدو أن Sqlite حتى الآن يبرز كخيار جيد ممكن وبعد

ولكن في نهاية اليوم، سيعتمد اختيارك على ظروفك ومتطلباتك الفردية.

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