كيف كنت تدير التطبيق الخاص بك عندما تكون قاعدة البيانات يذهب حاليا ؟

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

  •  09-06-2019
  •  | 
  •  

سؤال

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

ما هي اقتراحات واستراتيجيات التعامل مع هذا النوع من السيناريو فيما يتعلق :

  • معالجة الخطأ - على سبيل المثال ، هل التفاف كل الاتصال إلى الملقم مع Try/Catch أم أنك تعتمد على بعض شكل من خطأ عامة مناولة لإدارة هذا ؟ إذا ماذا يبدو لك ؟

  • إدارة التطبيقات - على سبيل المثال ، هل تعطيل التطبيق لا تسمح للمستخدمين إلى التفاعل معها حتى تم الكشف عن اتصال مرة أخرى ؟ ماذا كنت ستفعل ؟

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

المحلول

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

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

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

وخاصة بالنسبة السيناريو الخاص بك Microsoft المتقدمة قطع وكيل خدمة تطبيق بلوك

نصائح أخرى

أنا لم تطرق WinForms و .صافي لسنوات حتى الآن, لذلك أنا لا يمكن أن تعطي أي تفاصيل تقنية ، ولكن هناك الجعة الصورة الإجابة:

أولا وقبل كل شيء - لا ربط بيانات النموذج الخاص بك مباشرة إلى قاعدة البيانات الخاصة بنا.

إنشاء قاعدة بيانات منفصلة/نموذج طبقة ربط النموذج الخاص بك إلى الحاجيات.

من هناك, لديك العديد من الخيارات المتاحة لك اعتمادا على مستوى الاستقرار وتوافر تحتاج إلى توفير.

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

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

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

قد يكون هذا قليلا أيضا الكثير من الدعم حاليا السيناريو, ولكن هل فكرت "Microsoft Sync إطار"?المدرجة في إطار "خدمات مزامنة ADO.NET 2.0" الذي يسمح التطبيق الخاص بك إلى ضرب المحلية SQL Server CE سبيل المثال.هذا يمكن بسهولة أن تكون متزامنة مع المركزي SQL Server عبر مجموعة متنوعة من الطرق.

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

لدينا هذا في Main() الأسلوب الذي الفخاخ جميع الاستثناءات غير المعالجة...

Application.ThreadException += new 
System.Threading.ThreadExceptionEventHandler(UnhandledExceptionCatcher);

Thread.GetDomain().UnhandledException += new 
UnhandledExceptionEventHandler(Application_UnhandledException);

ثم Application_UnhandledException و UnhandledExceptionCatcher عرض المستخدم ودية الرسائل.

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

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

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

استخدام شيء من هذا القبيل سكليتي لتخزين البيانات حاليا حتى اتصال متوفرة.

تحديث:أعتقد SQLite هي النهاية. جوجل التروس, التي من فهم ما تبحث عنه في تطبيقات الويب...على الرغم من أنني لا أعرف ما إذا كان يمكن استخدامها في سياق شبكة الإنترنت.

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