سؤال

في تطبيق Windows Phone 7 ، أود الاستعلام عن ملف XML كبير (قائمة المدن) المخزنة باستخدام تخزين معزول. إذا فعلت ذلك بهذه الطريقة ، فهل سيتم تحميل الملف على الذاكرة (> 5 مو)؟ إذا كان الأمر كذلك ، فما الحل الآخر الذي لدي؟

يحرر:

المزيد من التفاصيل. أرغب في استخدام AutoCompleteBox (http://www.jeff.wilcox.name/2008/10/introducing-autocompoxbox/) ، ولكن بدلاً من استخدام خدمة ويب (هذه بيانات ثابتة ، لا داعي للإنترنت) ، أريد للاستعلام عن ملف/قاعدة بيانات/تخزين معزول ... لدي قائمة ثابتة من المدن. قلت في التعليقات إنها 40 ألفًا ، لكنها في النهاية تبدو أقرب إلى صفوف 1K.

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

المحلول

بدلاً من استخدام ClosedStorage لهذا الغرض ، هل سيكون خيارًا لك لاستخدام خدمة الويب بدلاً من ذلك ... أو هل تقوم بتصميم تطبيقك لنهج غير متصل بالإنترنت؟

يعد الاستعلام عن خدمة WebService أو WCF أو JSON WebService أمرًا بسيطًا حقًا ، وسيكون من الأسهل عليك صيانتك :)

نصائح أخرى

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

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

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

  1. لا حاجة لسحب الملف بأكمله إلى الذاكرة
  2. لا توجد مشكلة في سماء XML (في تطبيق سطح المكتب قد لا يكون مشكلة ، ولكن في سياق الهاتف قد يصبح ملف نصي 5 ميجابايت أصغر قليلاً)

مثال غبي:

New York City; 12345
Berlin; 25635
...

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

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

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