هل تنتمي هذه القيم إلى ملف التكوين أو قاعدة البيانات؟

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

سؤال

هناك قيم متعددة قمت بتخزينها في أقسام تكوين ASP.NET لكل "وحدة".لقد كنت أتساءل عما إذا كانوا ينتمون إلى هذه الملفات على الإطلاق.

الخلفية تقف عند:هذه هي مثيلات متعددة لتطبيق الويب الذي تم نشره.جميعهم يستخدمون نفس قاعدة البيانات ولكن لديهم إعداداتهم الخاصة.

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

لقد قمت بتحليل جميع القطع المشتركة في الفصول الدراسية بقواعدها وأساليبها الخاصة.القطع المتبقية هي إعدادات متنوعة لكل وحدة في كل موقع.تتضمن بعض الخيارات التي لست متأكدًا منها ما يلي:

  • لـ ModuleA، خيار إظهار/إخفاء
  • بالنسبة إلى ModuleB، ما هي المصطلحات التي سيتم استخدامها في هذا المجال
  • بالنسبة إلى ModuleC، اسمح للمستخدم النهائي بتنفيذ إجراء X
هل كانت مفيدة؟

المحلول

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

نصائح أخرى

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

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

ضع في اعتبارك الموقف عندما تحتاج إلى تعديل إحدى القيم.

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

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

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

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

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

بمعنى آخر، سيتعين عليك مراعاة الكثير من المتغيرات للإجابة على سؤالك :-)

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