مقارنة خيارات التخزين

مكتمل

يوفر .NET MAUI خيارات تخزين متعددة لتخزين البيانات مؤقتا محليا على جهاز، اعتمادا على طبيعة البيانات وبنيتها وحجمها. الخيارات الثلاثة الأكثر استخداما لتخزين البيانات محليا في تطبيق .NET MAUI هي:

  • التفضيلات: يخزن البيانات في أزواج قيم المفاتيح
  • نظام الملفات: يخزن الملفات غير المخزنة مباشرة على الجهاز من خلال الوصول إلى نظام الملفات
  • قاعدة البيانات: تخزين البيانات في قاعدة بيانات ارتباطية

Diagram of the common local storage options available to a .NET MAUI app.

في هذه الوحدة، ستنظر في خيارات التخزين هذه والحالات التي يكون فيها كل خيار هو الأنسب.

متى تستخدم التفضيلات «Preferences»

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

توضح التعليمات البرمجية التالية كيفية تخزين قيمة منطقية مسجلة saveLoginDetails في المتغير إلى تفضيل يسمى SaveLogin، ثم قراءة هذه البيانات مرة أخرى لاحقا. لاحظ أن Get الأسلوب يتوقع منك توفير قيمة افتراضية إذا لم يتم العثور على التفضيل المحدد:

bool saveLoginDetails = ...;
...
Preferences.Set("SaveLogin", saveLoginDetails);
...
var savedPreference = Preferences.Get("SaveLogin", false);

Preferences تحتوي الفئة أيضا على أساليب لتحديد ما إذا كان التفضيل المسمى موجودا (ContainsKey)، وحذف تفضيل (Remove)، وإزالة كافة بيانات التفضيل (Clear).

إشعار

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

متى تستخدم نظام الملفات «File System»

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

using System.Text.Json;
using System.IO;

// Data to be written to the file system, and read back later
List<Customer> customers = ...;

// Serialize and save
string fileName = ...;
var serializedData = JsonSerializer.Serialize(customers);
File.WriteAllText(fileName, serializedData);
...

// Read and deserialize
var rawData = File.ReadAllText(fileName);
customers = JsonSerializer.Deserialize<List<Customer>>(rawData);

الوصول إلى بيئة الاختبار المعزولة للتطبيق

عندما تعمل مع ملفات فضفاضة مثل ملفات XML، تحتاج إلى تخزينها في موقع مناسب في نظام الملفات. قد تكون بعض هذه البيانات حساسة، ولا تريد حفظها في موقع يمكن للتطبيقات أو المستخدمين الآخرين الوصول إليه بسهولة. توفر تطبيقات .NET MAUI بيئة الاختبار المعزولة للتطبيق. بيئة الاختبار المعزولة للتطبيق هي منطقة خاصة يمكن للتطبيق الخاص بك العمل بها. بشكل افتراضي، لا يمكن لأي تطبيقات أخرى الوصول إلى هذه المنطقة بخلاف نظام التشغيل. يمكنك الوصول إلى بيئة الاختبار المعزولة باستخدام الخاصية AppDataDirectory الثابتة للفئة FileSystem :

string path = FileSystem.AppDataDirectory;

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

إشعار

FileSystem.AppDataDirectory الخاصية هي تجريد لمسار خاص بالجهاز؛ يتم تقييمها إلى مجلدات مختلفة على Android وiOS وWinUI3. يسمح لك هذا التجريد بكتابة التعليمات البرمجية التي تشير إلى بيئة الاختبار المعزولة بطريقة مستقلة عن النظام الأساسي الذي يتم تشغيله عليه. استخدم هذا التجريد بدلا من الرجوع إلى مسار خاص بالجهاز بشكل صريح في التعليمات البرمجية الخاصة بك.

إرشادات لحفظ البيانات في تطبيقات iOS

تمتلك Apple إرشادات iOS عن المكان الذي ينبغي تخزين الملفات فيه. هناك موقعان رئيسيان للمجلد:

  • مجلد المكتبة: يتم إرجاع هذا المجلد بواسطة الخاصيةFileSystem.AppDataDirectory، كما هو موضح سابقا. استخدم مجلد المكتبة عند تخزين البيانات التي تم إنشاؤها بواسطة التطبيق.

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

    string docFolder = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
    

متى تستخدم قاعدة البيانات «Database»

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

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

1.

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

2.

افترض أنك تريد تخزين جزء صغير من البيانات بحيث يمكن الوصول إليها بين عمليات تشغيل التطبيقات. ما أنسب خيار لتخزين البيانات؟