المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : الدرس الستون : Object Serialization - دورة .net 2008


khaledbelal
03-07-2010, 02:30 AM
بسم الله الرحمن الرحيم .
السلام عليكم ورحمة الله وبركاته .

سنتعرف اليوم سريعاً عن مفهوم ال Object Serialization .

عمل الفئة الخاصة بك لتكون Serializable :

كل ما في الأمر أن تضع الكلمة : [Serializable] اعلى اسم الكلاس بالشكل التالي مثلاً :
C#:

[Serializable]
public class serial
{
}

vb.net:

<Serializable()> _
Public Class serial

End Class


ماذا استفيد من كون الفئة الخاصة بي Serializable ؟

معظم الفئات الاساسية تتيح لك كونها Serializable للاستفادة من بعض الخصائص مثل الكتابة المباشرة إلى ملفات القرص الصلب كما تعلمنا سابقاً ، هذا المثال :
C#:

serial sample =new serial();
using(Stream fs1 = new FileStream("data.txt",
FileMode.Create, FileAccess.Write, FileShare.None))
{
binFormat.Serialize(fw1, sample );
}


vb.net:

Dim sample As New serial()
Using fs1 As Stream = New FileStream("data.txt", FileMode.Create, FileAccess.Write, FileShare.None)
binFormat.Serialize(fw1, sample)
End Using


ماذا أيضاً ؟
هناك عدد كبير من الكائنات التي قد لا تقبل التعامل مع الفئات الخاصة بك إلا لو كانت Serializable ، منها ال View State في صفحات ال ASP.net .

هناك العديد من الطرق لعمل Serialization لكائناتك ، منها BinaryFormatter :
C#:

Dim binFormatter As New BinaryFormatter()
Using fs1 As Stream = New FileStream("data.txt", FileMode.Create, FileAccess.Write, FileShare.None)
binFormat.Serialize(fs1, myobject)
End Using

vb.net:

BinaryFormatter binFormatter = new BinaryFormatter();
using(Stream fs1 = new FileStream("data.txt",
FileMode.Create, FileAccess.Write, FileShare.None))
{
binFormat.Serialize(fs1, myobject);
}

ولعمل Deserializing :

C#:

BinaryFormatter binFormatter = new BinaryFormatter();
using(Stream fs1 = File.OpenRead("data.txt"))
{
newobject car =
(objectclass)binFormatter.Deserialize(fs1);
}


vb.net:

Dim binFormatter As New BinaryFormatter()
Using fs1 As Stream = File.OpenRead("data.txt")
Dim car As newobject = DirectCast(binFormatter.Deserialize(fs1), objectclass)
End Using

XmlSerializer :

يعد ال XML النوع الأحدث في عالم تخزين البيانات نظراً لإنه يجمع بين امكانيات قواعد البيانات من حيث البحث وخلافه ويجمع بين سهولة التعامل معها كما في الملفات النصية ، الصيغة العامة لأي ملف XML بالشكل التالي :

<root>
<Member>
<Name>AHmed</Name>
<Age>22</Age>
</Member>
</root>


أحمد و 22 تسمى Element أما Name و Age تسمى Attribute

لمعرفة المزيد حول XML يمكنك البدء من هنا :
http://www.w3schools.com/xml/xml_whatis.asp

العناصر الأساسية الموجودة في System.Xml.Serialization :

XmlAttributeAttribute : يتم تحويل هذا العنصر على انه Attribute
XmlElementAttribute : يتم تحويل هذا العنصر على انه Element
XmlRootAttribute : لتحديد ال Root .
XmlTextAttribute : يتم تحويلها ل XML Text

فمثلاً لتحويل هذه الفئة إلى XML عن طريق عملية Serialization :
C#:

class Members
{
[XmlAttribute]
string Name;
[XmlAttribute]
int Age;
}

vb.net:

Class Members
<XmlAttribute()> _
Private Name As String

<XmlAttribute()> _
Private Age As Integer

End Class


والآن بعد اضافة اي نوع من البيانات على هذه الفئة ومن ثم عمل Serialization ستجد الناتج على شكل ملف XML السابق .
لم اتوسع في هذه الجزئية ولكن اتوقع أني قد اعود إليها بعد انتهاء الدروس الاساسية .

والله الموفق ..
والسلام عليكم ورحمة الله وبركاته .