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 السابق .
لم اتوسع في هذه الجزئية ولكن اتوقع أني قد اعود إليها بعد انتهاء الدروس الاساسية .
والله الموفق ..
والسلام عليكم ورحمة الله وبركاته .
السلام عليكم ورحمة الله وبركاته .
سنتعرف اليوم سريعاً عن مفهوم ال 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 السابق .
لم اتوسع في هذه الجزئية ولكن اتوقع أني قد اعود إليها بعد انتهاء الدروس الاساسية .
والله الموفق ..
والسلام عليكم ورحمة الله وبركاته .