بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته
-----------------
بدون مقدمات اليوم حابب اكتب درس في الobject serialization بالعربي تسلسل الكائنات
هاذا الموضوع من المواضيع المتقدمة في بيئة ال.NET
قبل لبدء هناك تعريف يجب ان تكون عزيزي القارئ تعلمه وهو
معنى الobject instant او بالعربي نسخة الكائن --->انه عندما نقوم بخلق object من class فانة يتم انشاء مساحة في الذاكرة تحتوي بيانات الobject
بالمختصر هي المنظقة في الذاكرة التي تحمل بيانات object تم انشائه من class.
...........................................................................................................................................................................................
الان نبدأ على بركة الله
معنى object serialization :-هي عملية حفظ object instant في stream
معنى Deserializing:-العكس
ما اهميته :-
الاهمية كبيرة فليس هناالك شيء لا يوجد له اهمية
واهميته تكمن في الابقاء على حياه الobject اي الobject لا يموت ابدا
بحيث يكون محفوظ في مكان في القرص الصلب او ممكن ان تنقله عبر الشبكة وممكن انك تتناقله من flash الى flash
ووقت ما تريد استدعائه تستدعيه
وكيف ذلك الان سوف نرى ذلك بالعملي
سوف اطبق الامثلة بلغة الc# و vb
--------------------------------------------------------------------------------------------------------------------------------------------------
نبدا بالجزء الاول وهو Binary Serialization
الخطوات لعمل الserialization
1-خلق الكائن او الobject من الclass وهذا الobject هو الذي سوف نعمل له الserialization
2-نقوم بعمل stream الذي يحفظ فيه الobject
3-نقوم بخلق object من نوع binary serialization الذي من خلاله اقدر ان استدعي عملية ال serialization التي تستقبل 2parameter الاول يمثل الstream والثاني الobject
خطوات عمل Deserializing
1-عمل مؤشر الذي سوف يشير الobject الذي سوف نستدعيه
2-عمل stream الذي يمثل مسار الobject الذي نريده
3-نقوم بخلق object من binary serialization الذي من خلاله نقدر من استدعاء عملية الDeserialize والتي تستقبل 1parameter وهو الstream وهي ترحع قيمة من نوع object اي يجب عمل لها convert للنوع الذي نريده
الجزء العملي
مثال
c#
هنا عملية serialization
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
namespace WindowsFormsApplication3
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
serialization();
}
//هذه الميثود تمثل عملية ال
//serialize
public void serialization()
{
//هنا عرفنا مصفوفة من العناصر التي سوف نطبق علىها العملية
int[] array = {
1,
2,
3
};
//هنا عرفنا المسار الذي سوف نحفظ فيه الكائن
FileStream stream = File.Open("object.mm", FileMode.OpenOrCreate);
//هنا عملية خلق كائن من نوع ال
//BinaryFormatter
//التي من خلالها نقدر ان نعمل عملية ال
//serialize and Deserialize
//srlilize
//تستقبل متحولين الاول يمثل الستريم والثاني الكائن الذي نريد حفظه
BinaryFormatter serobj = new BinaryFormatter();
serobj.Serialize(stream, array);
stream.Close();
}
}
}وهنا الDeserializing
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
namespace WindowsFormsApplication3
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
Deserializing();
}
//هذه الميثود تمثل عملية ال
//Deserialize
public void Deserializing()
{
int[] array2 = null;
FileStream stream = File.Open("object.mm", FileMode.OpenOrCreate);
BinaryFormatter serobj = new BinaryFormatter();
//هنا عملنا تحولي تحويل للكائن الذي سوف نستدعيه الى النوع الذي نريده وهو
//integger
//لانو يرجع من نوع
//object
array2 = ((int[])(serobj.Deserialize(stream)));
stream.Close();
//الان لنرى النتيجة
MessageBox.Show(array2[0].ToString() + "," + array2[1].ToString() + "," + array2[2].ToString());
}
}
}الكود بلغة الvb
اولا serialization
Imports System.IO
Imports System.Runtime.Serialization.Formatters.Binary
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
serialization()
End Sub
'هذه الميثود تمثل عملية ال
'serialize
Public Sub serialization()
'هنا عرفنا مصفوفة من العناصر التي سوف نطبق علىها العملية
Dim array As Integer() = {1, 2, 3}
'هنا عرفنا المسار الذي سوف نحفظ فيه الكائن
Dim stream As FileStream = File.Open("object.mm", FileMode.OpenOrCreate)
'هنا عملية خلق كائن من نوع ال
'BinaryFormatter
'التي من خلالها نقدر ان نعمل عملية ال
'serialize and Deserialize
'srlilize
'تستقبل متحولين الاول يمثل الستريم والثاني الكائن الذي نريد حفظه
Dim serobj As New BinaryFormatter()
serobj.Serialize(stream, array)
stream.Close()
End Sub
End Classوهنا العملية العكسية منها
Imports System.IO
Imports System.Runtime.Serialization.Formatters.Binary
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Deserializing()
End Sub
'هذه الميثود تمثل عملية ال
'Deserialize
Public Sub Deserializing()
Dim array2 As Integer()
Dim stream As FileStream = File.Open("object.mm", FileMode.OpenOrCreate)
Dim serobj As New BinaryFormatter()
'هنا عملنا تحولي تحويل للكائن الذي سوف نستدعيه الى النوع الذي نريده وهو
'integger
'لانو يرجع من نوع
'object
array2 = CType(serobj.Deserialize(stream), Integer())
stream.Close()
'الان لنرى النتيجة
MessageBox.Show(array2(0).ToString() + "," + array2(1).ToString() + "," + array2(2).ToString())
End Sub
End Classهكذا نكون انتهينا من الجزء الاول والجزء الثاني بسيط بس اضافة بسيطة للجزء الاول
الجزء الثاني سوف اقوم بشرحة عندما يتسنى لي الوقت إن شاء الله
اسف اذا كان هناك اخطاء او شيء غير مفهوم
وبارك الله فيكم
:) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :)
