سؤال

أنا أعمل على عميل Silverlight وخدمات ويب ASP.NET المرتبطة به (وليس WCF)، وأحتاج إلى تنفيذ بعض الميزات التي تحتوي على تفضيلات المستخدم مثل نظام "العناصر المفضلة" وما إذا كانوا يرغبون في تغليف الكلمات أم لا.من أجل تقديم تجربة مستخدم ممتعة (وليست مثيرة للغضب)، أريد الاستمرار في هذه الإعدادات عبر الجلسات.ويشير تحقيق موجز إلى أن هناك احتمالين رئيسيين.

  1. تخزين Silverlight المعزول
  2. قاعدة بيانات يمكن الوصول إليها باستخدام ASP.NET

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

ما أبحث عنه هو اقتراحات حول أفضل طريقة لتنفيذ ثبات الإعدادات، في أي من السيناريوهين.على سبيل المثال، إذا تم استخدام التخزين المعزول، فهل يجب علي استخدام تنسيق XML، أو أي تخطيط ملف آخر للاستمرار في الإعدادات؛إذا تم استخدام نهج قاعدة البيانات، فهل يجب علي تصميم جدول إعدادات أم أن هناك آلية مدمجة في ASP.NET لدعم ذلك، وكيف أقوم بخدمة التفضيلات للعميل؟

لذا:

ما هو الحل الأفضل لاستمرارية تفضيلات المستخدم؟كيف يمكن الحفاظ على الإعدادات في هذا الحل، وكيف يمكن للعميل الوصول إليها وتحديثها؟

البحوث السابقة

لاحظ أنني أجريت بحثًا مسبقًا قليلًا حول هذا الموضوع ووجدت الروابط التالية، والتي يبدو أنها تؤيد أيًا من الحلين اعتمادًا على المقالة التي تقرأها.

تحديث

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

أبقي السؤال مفتوحًا لأنه على الرغم من أن Microsoft توفر ثبات الإعدادات من جانب العميل، فهذا لا يعني بالضرورة أن هذا هو أفضل أسلوب لاستمرار تفضيلات المستخدم وأرغب في جمع المزيد من الآراء والاقتراحات حول هذا الموضوع.

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

المحلول

بعد التحقيق في المزيد وتنفيذ استمرارية إعدادات ملف XML الخاصة بي باستخدام تخزين معزول, ، لقد اكتشفت إعدادات التخزين المعزولة الطبقة و IsolatedStorageSettings.ApplicationSettings كائن عبارة عن مجموعة مفاتيح/قيمة مخصصة لتخزين إعدادات التطبيق الخاصة بالمستخدم.

كل شيء يبدو واضحا الآن.بالطبع، على المدى الطويل، ستكون آلية النسخ الاحتياطي واستعادة الإعدادات باستخدام قاعدة بيانات الخادم بمثابة تحسين جيد لاستمرارية الإعدادات من جانب العميل.

نصائح أخرى

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

بعد أن قيل هذا، ووضع نفسي في جانب "قاعدة البيانات" من الحجة، أود أن أسأل ما هو الجانب السلبي لقاعدة البيانات؟لقد ذكرت استخدام XML - هل بياناتك شبه منظمة فقط؟إذا كان الأمر كذلك، لماذا لا يتم تخزين XML في قاعدة بيانات SQL؟إن إعداد شيء بهذه البساطة لا يعتبر عمومًا "عبئًا" وفقًا لمعظم المعايير.يمكن أن تعمل خدمة الويب البسيطة كوسيط بين عميل Silverlight وقاعدة بيانات الإعدادات.

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

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

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