منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
مقال- التخزين المعزول Isolated Storage - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : الاقسام الاخرى (http://vb4arb.com/vb/forumdisplay.php?fid=74)
+--- قسم : قسم المقالات العام (http://vb4arb.com/vb/forumdisplay.php?fid=85)
+--- الموضوع : مقال- التخزين المعزول Isolated Storage (/showthread.php?tid=5432)



مقال- التخزين المعزول Isolated Storage - RaggiTech - 09-10-12

كاتب الموضوع : Islam Ibrahim

من ضمن العدد الهائل من الفئات والوظائف المقدمة من Microsoft .NET Framework توجد إحدى الميزات الجديدة والقوية لتخزين المعلومات المرتبطة بالمستخدمين والتطبيقات تدعى "التخزين المعزول" أو Isolated Sorage. تسمح مساحة الاسم System.IO.IsolatedStorage بكتابة البيانات إلى القرص الثابت عندما يكون ذلك أحياناً غير مسموح به. وهذا يوفر القدرة على تخزين أشياء مثل حالة تطبيق ومعلومات تفضيلات المستخدمين.

يمكن لكل من ASP.NET و تطبيقات نماذج Windows وحديثا تطبيقات SilverLight, و WPF استخدام الإمكانيات الكاملة للتخزين المعزول. يمكن لتطبيقات ASP.NET استخدامه لتخزين المعلومات الشخصية التي تفيد في تخصيص الموقع بالنسبة لكل مستخدم. سابقا كانت تطبيقات Windows تحفظ بيانات التطبيق في ملفات INI, وتسجيل Registry Windows, ولكن الآن أتيح للمطورين استخدام تقنية التخزين المعزول.

توفر هذه المقالة مثال لتطبيق Windows يوضح كيفية الوصول إلى المعلومات باستخدام التخزين المعزول باستخدام مساحات الأسماء ADO.NET و XML يمكن بسهولة قراءة البيانات والكتابة إليها باستخدام دفق الإدخال/الإخراج I/O مع التخزين المعزول.

كيف يعمل التخزين المعزول ؟
يساعد التخزين المعزول على إدارة البيانات المقروءة والمكتوبة من وإلى موقع تخزين معين. يمكنك اعتبار أنها منطقة محمية على محرك القرص الثابت الذي يمكن للعديد من التطبيقات الكتابة إليه ، بما فيها تلك التي لا تحتوي عادة على إذن بذلك. يمكن لتطبيقات Windows وتطبيقات ASP.NET أن تحتوي على تعليمات برمجية بمستويات مختلفة للأمان, من أدنى مستوى No trust إلى أعلى مستوى Full trust.

هناك نوعان من العزل يمكن تطبيقهما:
1 - العزل بواسطة المستخدم User, والتجميع Assembly.
2 - العزل بواسطة المستخدم User, المجال Domain, والتجميع Assembly.

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

1 - العزل بواسطة المستخدم User, والتجميع Assembly
يستخدم هذا النوع من العزل عند تشغيل التطبيقات من مصادر موثوق بها والتي تتطلب تبادل المعلومات بين عدة تطبيقات لنفس التجميع.

2 - العزل بواسطة المستخدم User, المجال Domain, والتجميع Assembly.
يستخدم هذا النوع من العزل عند تشغيل التطبيقات من مصادر غير موثوق بها مثل المكونات التي تم تحميلها من الإنترنت. كما قد يستخدم هذا النوع من التخزين عند يشترط ان يكون لكل تطبيق موقع تخزين منفصل.

يتبع...


مقال- التخزين المعزول Isolated Storage - RaggiTech - 09-10-12

التعامل مع التخزين المعزول:

قبل البدء قم باستيراد مساحات الاسم التالية:


كود :
Imports System.IO
Imports System.IO.IsolatedStorage

للحصول على محتوى معزول والمسمى Store والخاص بالتجميع الحالي للتطبيق الخاص بك Asembly:


كود :
Get the isolated store for this assembly
Dim isf As IsolatedStorageFile = _
IsolatedStorageFile.GetUserStoreForAssembly()
لإنشاء مجلد

تحتوي الفئة IsolatedStorageFile على أسلوب يقوم بإنشاء مجلدات داخل التخزين المعزول
' إنشاء مجلد في مخزن معزول

كود :
isf.CreateDirectory("Dir1")

لإنشاء مجلدات فرعية


كود :
isf.CreateDirectory("Dir1/Dir2")
لإنشاء ملف داخل المحتوى المعزول Store الحالي:


كود :
Dim isfs1 As IsolatedStorageFileStream = _
New IsolatedStorageFileStream("Rootfile.txt", _
FileMode.OpenOrCreate, FileAccess.Write, isf)
للكتابة داخل ملف موجود داخل المحتوى المعزول الحالي:


كود :
Dim isfs1 As IsolatedStorageFileStream = _
New IsolatedStorageFileStream("Rootfile.txt", _
FileMode.OpenOrCreate, FileAccess.Write, isf)

' يتم التعامل معه كأي stream
Dim sw As StreamWriter = New StreamWriter(isfs1)
sw.WriteLine("Isolated storage is keen.")
sw.WriteLine("You can treat it like a file.")
sw.Flush()
sw.Close()
القراءة من ملف داخل Store الحالي:


كود :
Dim isfs1 As IsolatedStorageFileStream = _
New IsolatedStorageFileStream("Rootfile.txt", _
FileMode.Open, FileAccess.Read, isf)


Dim sr As StreamReader = New StreamReader(isfs1)
Dim sw As StringWriter = New StringWriter()
While (sr.Peek() > -1)
sw.WriteLine(sr.ReadLine)
End While

MessageBox.Show(sw.ToString, _
"Isolated Storage contents")
لحذف ملف أو مجلد:


كود :
isf.DeleteFile("Dir3/Dir4/Anotherfile.txt")
isf.DeleteFile("Rootfile.txt")
لحذف مجلد فرعي:

كود :
isf.DeleteDirectory("Dir1/Dir2/")
isf.DeleteDirectory("Dir1/")