الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

فكره في التسلسل Serialization

بدأه م ميكي في 7 أبريل 2013 · 4 رد · 1,189 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

 

بسم الله الرحمن الرحيم

 

 سابدأ معكم  باذن الله في دراسة التسلسل في الدوت نت وسوف استعين  استعين بكتاب برمجة اطار العمل للاستاذ العبقري الذي لم اره حتي الان ( الاستاذ تركي العسري )  وبمكتبة (MSDN)

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

 

وقبل ان ادخل في الموضوع اريد ان انوه ان بعض الفقرات التي قرأتها في   MSDN  قد ترجمتها بمساعدة بعض مواقع الترجمه

  -----------------------------------------------------------------------------------------------

 تسلسل الكائنات  Object Serialization

يقول الاستاذ تركي العسري  معرفا التسلسل  " هو عميلة حفظ بيانات نسخة الكائن في وحدة تخزين (قد تكون ملف او قاعدة بيانات) ويمكنك اعادة احياء  الكائن واستخدامه في شفراتك"

ويقول موضحا ان نسخة الكائن هي  ذلك الجزئ من الذاكرة والذي يحمل بيانات كائن تم انشاءه من فئه

 

dim mecke as new person

dim ali as new person

dim mada as peron=ali

لاحظ اننا انشأنا  نسختين من كائن رغم وجود ثلاث مؤشرات 

اتمني ان تكون قد عرفت  ما هي نسخة  الكائن  اما بيانات نسخة الكائن فلنفرض ان الفئيه person بها متغير ان name &  age  

تعالي معي نعطي قيم

ali.name=mada

ali.age=250

بيانات نسخة aliالمقصوده هي القيم المعطاه للمتغيران "name  & age"

 

 في مكتبة ال msdn   نجد  التعريف التالي للتسلسل

 

Serialization is the process of converting an object into a stream of bytes in order to persist it to memory, a database, or a file. Its main purpose is to save the state of an object in order to be able to recreate it when needed. The reverse process is called deserialization.

 

وترجمتها كالتالي

" التسلسل هو عملية حفظ لحالة الكائن  الي ملف  او قاعدة بيانات  حتي نتمكن من اعادة استخدامها  فيما بعد من  نفس البرنامج ااو في برنامج اخر او عبر صفحات الويب  وذلك يسمي عكس التسلسل       وتضيف  المكتبه انه يتم  تسلسل بالاضافه للبيانات يتم حفظ   اسم المجمعة , والاصدار , والثقافه المحلية لجهاز المستخدم 

 

يمكنك استخدام التسلسل بالطريقه الثنائيه ()   Binary serialization

 

او  xml serialization

وسوف اقوم بشرح كل منهم علي انفراد ان شاء الله  ورايي الشخصي ان التسلسل يفيد جدا في برامج الويب  والبرامج الكبير  

 

 

وفي نهاية هذا الجزء ارجو التفاعل وتوضيح بعض النقاط اللتي قد اكون غفلت عنها   

 

وارجي تقديم  ارائكم في موضوعي كمبتدأ

 

 

اراكم قريبا باذن الله

 

 

1
#2

كنت اتمني مشاركه اكثر من ذلك   ولو شخص واحد  يشعرني انه يهتم بالمبتدئين امثالس

#3

شكرا على المساعد وانا كمان من المبتدئين وشكرا على هذه المعلومات :)

мᾄђмὄմḋ

#4
M_Elebiary كتب:

شكرا على المساعد وانا كمان من المبتدئين وشكرا على هذه المعلومات :)

 العفو اخي وتابع معي  باقي المشاركه  وقريبا سوف اقوم باستكمال باقي الشرح

#5

بسم الله الرحمن الرحيم

التسلسل بالصيغة الثنائيه

دعنا ننظر الي الكود

 

Imports System.Runtime.Serialization ' نستورد مجال الاسماء للتسلسل

Imports System.Runtime.Serialization.Formatters.Binary 'نستورد هذا للتسلسسل بالصيغةالثنائيه

Imports System.IO ' وهذا للتعامل مع الملفات

 

     Module ?????

 

……………..

……………..

           Sub main()

            Ser()

           End sub

 

 

                                                                                                 

 

Sub Ser()

        Dim data As String() = {"hamada", "ali", "mecky"} '  نعرف المتغير الذي نريد اجراء التسلسل عليه

        Dim st As FileStream = File.Open("d:\test.dat", FileMode.OpenOrCreate)' نعرف المتغير الذي سوف نستخدمه في حفظ الملف الذي يحتوي علي حالة الكائن

        Dim SerialObj As New BinaryFormatter() 'نعرف الكائن المسؤول  عن عملية التسلسل

 

        ' بدء عملية التسلسل

        SerialObj.Serialize(st, data)

 

 

        ' Stream اغلق وحدة التخزين

        st.Close()

    End Sub

    End Module

 

 

 

دعنا نوضح أكثر  فلحفظ  حالة الكائن  في ملف يلزمنا  استيراد مجال الاسماء   system.io والذي  يحتوي فئة  filestream وعرفنا منها متغير st وهو مسؤول عن الملف

 

ثم يلزمنا استيراد مجال  الاسماء System.Runtime.Serialization.Formatters.Binary

والذي عرفنا منه متغير باسم  SerialObj  والمسؤول عن اجراء عملية التسلسل    

 اجراء  Serialize()     يستخدم لبدأ اجراء عملية التسلسل ويطلب متوسطان

الاول مـــــــــن نوع  FileStream

والثاني  هو الكائن الذي نريد   حفظ حالته

   )))))))*************************************************************************************

عرفنا كيف يمكن  اجراء عملية التسلسل  لابد ان نعرف كيف يمكن اجراء عملية عكس التسلسل وهي كالتالي

  

 

 

Sub Deser()

        Dim data As String()

        Dim st As FileStream = File.Open("d:\test.dat", FileMode.OpenOrCreate)

        Dim SerialObj As New BinaryFormatter()

 

        ' Deserializing عكس عملية التسلسل

        data = CType(SerialObj.Deserialize(st), String())

 

        st.Close()

 

    End Sub

 

  لاحظ معي  اننا  عرفنا المتغيرات كما عرفناها سابقا  دون تعيين قيم  للمتغير  data طبعا

والاختلاف هنا  اننا استخدمنا طريقه لنخبر المترجم ان قيم  المتغير data  موجوده  في مخرجات الداله CType  والتي تطلب وسيطين من نوع object ولاحظ ان داله deserialize تخرج تعود لنا بذلك والثانيه تطلب وسيط من نوع   FileStream   اما الوسيط الثاني للداله فهـــو نوع الكائن الذي نريد  عكس سلسلسته

 

 

ولتطبيق التسلسل في  الكونسول ابليكيشن نستدعي الداله ser في الحدث main  وكذالك مع عملية عكس التسلسل  

 

وفي النهايه ارجو ان اكون قد قدمت موضوع جيد عن التسلسل بالصيغه الثنائيه  وياريت لو في اسئله  ممكن نحلها مع بعض  

ملحوظه التسلسل الذي قمنا بتطبيقه هنا عن الانواع القياسيه

اراكم قريـــــــــــــــــــــبا

 والسلام ختام

2

مواضيع مشابهة