نمایش نتایج 1 تا 12 از 12

نام تاپیک: مقاله : کد کردن فایلها با استفاده از serialization

  1. #1
    کاربر دائمی آواتار hamidreza20
    تاریخ عضویت
    بهمن 1384
    محل زندگی
    زیر این سقف کبود...
    پست
    220

    مقاله : کد کردن فایلها با استفاده از serialization

    Serialize و Deserialize

    در این مقاله سعی می کنیم که یکی از اصلی ترین روش های ذخیره و بازیابی داده ها را معرفی کنیم .آیا تا به حال یک سیب زمینی را درون ماکروفر قرار داده اید تا پخته شود و آیا تا به حال یک سیب زمینی پخته را درون دستگاه دیگری قرار داده اید تا همان سیب زمین اول شود.
    مثلماً پاسخ شما برای آیای اول مثبت و پاسخ شما برای آیای دوم یک نگاه معنی دار خواهد بود!
    کار اول یعنی پختن سیب زمینی معادل عمل Serialize نمودن داده ها و کار دوم معادل Desterilize نمودن داده ها در .NET Framework می باشد.
    با Serialize نمودن داده ها می توانیم آنها را در مکان های مانند فایل ، جداول پایگاه داده و یا memory buffer نگه داری کنیم و با Desterilize نمودن آنها می توانید داده ها را از مکانهای ذکر شده فراخوانی نماییم.
    اگر بخواهیم مثالی برای Serialize و Desterilize داده ها بزنیم می توانید به ذخیره شدن یک فایل text از notepad و بازخوانی آن از دیسک برای نمایش مجدد اشاره نماییم، که کاملاً مشابه با فرایند Serialize و Deserialize داده ها می باشد.
    از نمونه استفاده های دیگر این فرایند می توانم به موارد زیر اشاره نمایم.
    1- نگه داری وضعیت یک نرم افزار (Application State Saving)
    2- Copy & Paste
    3- Clone Object کپی آبجکت
    4- Share Object over network ارسال اطلاعات در شبکه
    5- Encrypt compress objectرمز نگاری و رمز گشایی اطلاعات

    Serialize: فرآیندی برای تبدیل یک آبجکت و یا گرافی متشکل از چند آبجکت به یک حالت خطی (و جریان وار) از بایت ها برای انتقال و یا ذخیره سازی در محلی دیگر است.
    Deserialize : عمل برعکس سریالیزشین است؛ یعنی دوباره ساختن آبجکت از روی جریانی از بایتها .

    انواع فرمت ها در سریالیزشین :
    1- Binary : بصورت باینری سریالایز میکند. (فشرده ترین و efficient ترین حالت است)
    SOAP -2 : بصورت soap سریالایز میکند. (برای ارسال در شبکه و جایی که از تحت دات نت بودن کلاینتها مطمئن نیستیم)
    XML -3 : بصورت xml سریالایز میکند. (برای ارسال تحت شبکه - مزیت : خوانایی)

    برخی از موارد کاربرد سریالزیشین:
    1- کپی یک انشعاب از آبجکتها
    2- انتقال اطلاعات در شبکه
    3- نگهداری state ها و snapshot های مختلف در یک برنامه (برای موارد حساس : مثل تراکنشهای بانکی و ...)
    4- پیاده سازی Deep Copy و Shallow Copy

    برای استفاده از Serialize می بایست Namespace

    using System.Runtime.Serialization.Formatters.Binary;

    ، و برای کار با فایل از Namespace ،System.IO در پروژه استفاده می نماییم.

    در پروژه مان می خواهیم طول و عرض فرممان را در هنگام بستن فرم Serialize نماییم و در هنگام باز شدن مجدد فرم آنها را Deserialize و استفاده نماییم.
    در رویداد FormClosing کد زیر را می نویسیم

    private void Form1_FormClosing(object sender, FormClosingEventArgs e)
    {
    ArrayList arr = new ArrayList();
    arr.Add(this.Width);
    arr.Add(this.Height);
    FileStream fs = new FileStream("C:\\Test.dat", FileMode.Create);
    BinaryFormatter bf = new BinaryFormatter();
    bf.Serialize(fs, arr);

    }
    در این قطعه کد با قرار دادن عرض و ارتفاع فرم در یک ArrayList و ایجاد یک فایل به نام Test.dat توسط شی BinaryFormatter شی arraylist را در فایل Serialize می نماییم.
    حال برای Deserialize اطلاعات قطعه کد زیر را در رویداد Load فرم می نویسم، دقت شود که قرار دادن کد در try catch به منظور جلوگیری از رویداد خطا در هنگام load اول فرم و عدم وجود فایل test.dat می باشد.

    private void Form1_Load(object sender, EventArgs e)
    {
    try
    {
    using (FileStream fs = new FileStream("C:\\Test.dat", FileMode.Open))
    {
    BinaryFormatter bf = new BinaryFormatter();
    ArrayList ar = (ArrayList)bf.Deserialize(fs);
    this.Width = (int)ar[0];
    this.Height = (int)ar[1];
    }
    }
    catch { }
    }
    حال با اجرا فرم و تغییر سایز آن در صورتی که فرم را دوباره باز نماییم سایز آن به میزان سایز فرم قبل از بسته شدن خواهد بود.

    التماس دعا...

    اگه مفید بود خواستید تشکر بزنید...


  2. #2
    کاربر دائمی آواتار hamidreza20
    تاریخ عضویت
    بهمن 1384
    محل زندگی
    زیر این سقف کبود...
    پست
    220

    نقل قول: مقاله : کد کردن فایلها با استفاده از serialization

    دوستان مقاله فوق خیلی مفیده یه تست بکنید بد نیست. منم از یکی از دوستام گرفتم و انجام دادم برای یه پروژه که می خواستیم اطلاعات سرور رو از یه فایل بخونه و فایل کد بشه اون بخونه. البته من یه برنامه نویس بسیار مبتدی هستم و فقط علاقه دارم...

    التماس دعا...

  3. #3
    کاربر تازه وارد
    تاریخ عضویت
    خرداد 1389
    محل زندگی
    قم
    پست
    65

    نقل قول: مقاله : کد کردن فایلها با استفاده از serialization

    نقل قول نوشته شده توسط hamidreza20 مشاهده تاپیک
    دوستان مقاله فوق خیلی مفیده یه تست بکنید بد نیست. منم از یکی از دوستام گرفتم و انجام دادم برای یه پروژه که می خواستیم اطلاعات سرور رو از یه فایل بخونه و فایل کد بشه اون بخونه. البته من یه برنامه نویس بسیار مبتدی هستم و فقط علاقه دارم...

    التماس دعا...
    من از مقاله ی فوق هیچیییی نفهمیدم
    فکرم نمی کنم که شما مبتدی باشید
    و اگه نیستید و به مبتدی هایی مثل من که جون می کنن تا بفهمن این مقاله یعنی چی احترام میگذارید لطفا یه جوری مبتدیانه توضیح بدید این مقاله برای چیه و چیکارش کنم.
    مرسی
    از طرف یه واقعا مبتدی

  4. #4
    کاربر دائمی آواتار cardano7
    تاریخ عضویت
    اردیبهشت 1389
    محل زندگی
    کارتون خواب
    پست
    473

    نقل قول: مقاله : کد کردن فایلها با استفاده از serialization

    سلام
    منظورتون از کد کردن که رمزگراری نیست. هست؟
    چون هیچ کونه کدگزاری به این مفهوم در اون ندیدم.

  5. #5
    کاربر دائمی آواتار s.khoshfekran
    تاریخ عضویت
    فروردین 1389
    محل زندگی
    تهران
    پست
    503

    نقل قول: مقاله : کد کردن فایلها با استفاده از serialization

    سریالیز کردن هیچ ربطی به کد کردن نداره !!
    ولی من یه dll گذاشتم تو این قسمت که شما میتونین با استفاده از الگوریتم rijndael یک ابجکت رو سریالیز کنین!!
    http://www.barnamenevis.org/sh...=64210&page=51

  6. #6

    نقل قول: مقاله : کد کردن فایلها با استفاده از serialization

    با سپاس از دوست گرامی که این مقاله رو گذاشتن
    این serialization کردن هم عجب چیز جالبیه!!!

  7. #7
    کاربر تازه وارد
    تاریخ عضویت
    خرداد 1389
    محل زندگی
    قم
    پست
    65

    نقل قول: مقاله : کد کردن فایلها با استفاده از serialization

    نقل قول نوشته شده توسط s.khoshfekran مشاهده تاپیک
    سریالیز کردن هیچ ربطی به کد کردن نداره !!
    ولی من یه dll گذاشتم تو این قسمت که شما میتونین با استفاده از الگوریتم rijndael یک ابجکت رو سریالیز کنین!!
    http://www.barnamenevis.org/sh...=64210&page=51
    خوب شما یه توضیح بدید که سریالیز کردن چیه؟

  8. #8
    کاربر تازه وارد آواتار kahrizak
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    تهران
    پست
    69

    نقل قول: مقاله : کد کردن فایلها با استفاده از serialization


    serialization : اگر مبتدی هستید فعلا بحث serialization را کنار بگذاریدسراغ یک پروژه ساده بروید و سعی کنید آن را انجام دهید تا با پیش سوالات بیشتری برخورد کنید
    مسئله serialization را به بعد موکول کنید

    یک توضیح مختصر در باره serialization : فرض کنید چندین تابع دارید وهر تابع چند متغیر . چگونه می توانید متغیر ها را ذخیره کنید تا هنگام راه اندازی مجدد برنامه خودتان دوباره به آن متغیر ها دسترسی داشته با شد. آیا میتوانید متغیر ها را ذخیره کرد؟ جواب :بلی با استفاده از serialization ..
    آیا می دانید فوتوشاپ چگونه اطلاعات خود را ذخیره می کند و پس از اجرای دوباره از انها استفاده میکند(منظور psd.*)

  9. #9

    نقل قول: مقاله : کد کردن فایلها با استفاده از serialization

    آيا ميشه اطلاعات چند فرم رو در يك فايل نگه داشت ؟

  10. #10
    کاربر تازه وارد
    تاریخ عضویت
    مرداد 1388
    محل زندگی
    .Net Framework
    پست
    84

    نقل قول: مقاله : کد کردن فایلها با استفاده از serialization

    نقل قول نوشته شده توسط masiiha مشاهده تاپیک
    آيا ميشه اطلاعات چند فرم رو در يك فايل نگه داشت ؟
    بله میشه، اینجور که من فهمیدم کلا کار سریالایزیشن اینه که داده های مختلفی رو کنار هم بذاره و تبدیل به یک فایل کنه (حد اقل یکی از کارایی که میشه با سریالایزیشن انجام داد اینه) پس این کاری که گفتی رو هم میشه انجام داد. فقط باید یه تابع بنویسی که توش تمام اطلاعاتی که لازم داری رو سریالایز کنه و کنار هم تو یه فایل بذاره و بعد اون فایل رو ذخیره کنی.

    حالا یه مسئله مهمی که میمونه اینه که چطوری به اطلاعات فرم های مختلف توی یه تابع دسترسی داشته باشی. یه راه اینه که متغیر هایی که لازم داری رو public تعریف کنی که البته را غیر اصولی ای هست و جالب نیست. ولی می تونی تو هر فرم یه تابع public به اسم مثلا GetData بنویسی که کارش این باشه که اطلاعات مورد نیاز هر فرم رو به شکل یک ArrayList برگردونه. بعد تو تابعی که میخواد تمام اطلاعات رو سریالایز کنه یه ArrayList بساز و برای هر فرم تابع GetData رو صدا کن و اطلاعاتش رو به ArrayList مورد نظرت اضافه کن. اینجوری تمام اطلاعات رو از تمام فرم ها ذخیره کردی تو یه ArrayList. حالا این ArrayList رو سریالایز کن و بریز تو یه فایل.

  11. #11

    نقل قول: مقاله : کد کردن فایلها با استفاده از serialization

    نقل قول نوشته شده توسط hamidreza20 مشاهده تاپیک
    Serialize و Deserialize

    در این مقاله سعی می کنیم که یکی از اصلی ترین روش های ذخیره و بازیابی داده ها را معرفی کنیم .آیا تا به حال یک سیب زمینی را درون ماکروفر قرار داده اید تا پخته شود و آیا تا به حال یک سیب زمینی پخته را درون دستگاه دیگری قرار داده اید تا همان سیب زمین اول شود.
    مثلماً پاسخ شما برای آیای اول مثبت و پاسخ شما برای آیای دوم یک نگاه معنی دار خواهد بود!
    کار اول یعنی پختن سیب زمینی معادل عمل Serialize نمودن داده ها و کار دوم معادل Desterilize نمودن داده ها در .NET Framework می باشد.
    با Serialize نمودن داده ها می توانیم آنها را در مکان های مانند فایل ، جداول پایگاه داده و یا memory buffer نگه داری کنیم و با Desterilize نمودن آنها می توانید داده ها را از مکانهای ذکر شده فراخوانی نماییم.
    اگر بخواهیم مثالی برای Serialize و Desterilize داده ها بزنیم می توانید به ذخیره شدن یک فایل text از notepad و بازخوانی آن از دیسک برای نمایش مجدد اشاره نماییم، که کاملاً مشابه با فرایند Serialize و Deserialize داده ها می باشد.
    از نمونه استفاده های دیگر این فرایند می توانم به موارد زیر اشاره نمایم.
    1- نگه داری وضعیت یک نرم افزار (Application State Saving)
    2- Copy & Paste
    3- Clone Object کپی آبجکت
    4- Share Object over network ارسال اطلاعات در شبکه
    5- Encrypt compress objectرمز نگاری و رمز گشایی اطلاعات

    Serialize: فرآیندی برای تبدیل یک آبجکت و یا گرافی متشکل از چند آبجکت به یک حالت خطی (و جریان وار) از بایت ها برای انتقال و یا ذخیره سازی در محلی دیگر است.
    Deserialize : عمل برعکس سریالیزشین است؛ یعنی دوباره ساختن آبجکت از روی جریانی از بایتها .

    انواع فرمت ها در سریالیزشین :
    1- Binary : بصورت باینری سریالایز میکند. (فشرده ترین و efficient ترین حالت است)
    SOAP -2 : بصورت soap سریالایز میکند. (برای ارسال در شبکه و جایی که از تحت دات نت بودن کلاینتها مطمئن نیستیم)
    XML -3 : بصورت xml سریالایز میکند. (برای ارسال تحت شبکه - مزیت : خوانایی)

    برخی از موارد کاربرد سریالزیشین:
    1- کپی یک انشعاب از آبجکتها
    2- انتقال اطلاعات در شبکه
    3- نگهداری state ها و snapshot های مختلف در یک برنامه (برای موارد حساس : مثل تراکنشهای بانکی و ...)
    4- پیاده سازی Deep Copy و Shallow Copy

    برای استفاده از Serialize می بایست Namespace

    using System.Runtime.Serialization.Formatters.Binary;

    ، و برای کار با فایل از Namespace ،System.IO در پروژه استفاده می نماییم.

    در پروژه مان می خواهیم طول و عرض فرممان را در هنگام بستن فرم Serialize نماییم و در هنگام باز شدن مجدد فرم آنها را Deserialize و استفاده نماییم.
    در رویداد FormClosing کد زیر را می نویسیم

    private void Form1_FormClosing(object sender, FormClosingEventArgs e)
    {
    ArrayList arr = new ArrayList();
    arr.Add(this.Width);
    arr.Add(this.Height);
    FileStream fs = new FileStream("C:\\Test.dat", FileMode.Create);
    BinaryFormatter bf = new BinaryFormatter();
    bf.Serialize(fs, arr);

    }
    در این قطعه کد با قرار دادن عرض و ارتفاع فرم در یک ArrayList و ایجاد یک فایل به نام Test.dat توسط شی BinaryFormatter شی arraylist را در فایل Serialize می نماییم.
    حال برای Deserialize اطلاعات قطعه کد زیر را در رویداد Load فرم می نویسم، دقت شود که قرار دادن کد در try catch به منظور جلوگیری از رویداد خطا در هنگام load اول فرم و عدم وجود فایل test.dat می باشد.

    private void Form1_Load(object sender, EventArgs e)
    {
    try
    {
    using (FileStream fs = new FileStream("C:\\Test.dat", FileMode.Open))
    {
    BinaryFormatter bf = new BinaryFormatter();
    ArrayList ar = (ArrayList)bf.Deserialize(fs);
    this.Width = (int)ar[0];
    this.Height = (int)ar[1];
    }
    }
    catch { }
    }
    حال با اجرا فرم و تغییر سایز آن در صورتی که فرم را دوباره باز نماییم سایز آن به میزان سایز فرم قبل از بسته شدن خواهد بود.

    التماس دعا...

    اگه مفید بود خواستید تشکر بزنید...

    سلام
    توضیحاتت خیلی جالب و قشنگ بود
    منم از یه سایتی به نمونه برنامه گرفتم و روش کار کردم و خوب راه افتادم
    میزارم
    انشاالله مورد استفاده بقیه هم باشه

    اول یه کلاس به اسم data معرفی کنید
    public class data
    {
    public int id { get; set; }
    public string name { get; set; }
    public string family { get; set; }
    }

    بعد فرم با آبجکت های زیر درست کنیدform1.jpg
    حالا تو قسمت کد نویسی فرم به این شکل بنویسید
    ابتدا فضا کار با xml برای سریالیز کردن xml و یک فضای کار برای کار با فایل
    ایجاد کنید
    using System.Xml.Serialization;
    using System.IO;

    حالا کد نویسی اشیاء

    private void button1_Click(object sender, EventArgs e)
    {
    XmlSerializer seriali = new XmlSerializer(typeof(data));
    SaveFileDialog sf = new SaveFileDialog();
    sf.Filter = "xml file|*.xml";
    if (sf.ShowDialog() == DialogResult.OK)
    {
    string path = sf.FileName;
    data d = new data();
    d.id = Convert.ToInt16(txt_id.Text);
    d.name = txt_name.Text;
    d.family = txt_family.Text;
    FileStream fs = new FileStream(path, FileMode.Create) ;
    seriali.Serialize(fs , d );



    }
    seriali=null;
    }


    private void txt_id_KeyPress(object sender, KeyPressEventArgs e)
    {
    if (char.IsDigit(e.KeyChar) | e.KeyChar == (char)Keys.Back)
    e.Handled = false;
    else
    e.Handled = true;
    }


    private void button2_Click(object sender, EventArgs e)
    {
    XmlSerializer seriali = new XmlSerializer(typeof(data));
    OpenFileDialog op = new OpenFileDialog();
    op.Filter = "open file xml|*.xml";
    if (op.ShowDialog() == DialogResult.OK)
    {
    data d = new data();
    string path = op.FileName;
    FileStream fs = new FileStream(path, FileMode.Open);
    d = (data)seriali.Deserialize (fs);
    label2.Text = d.id.ToString();
    label3.Text = d.name;
    label4.Text = d.family;
    }

    فایل برنامه ضمیمه شده است }
    xml.rar

  12. #12
    کاربر دائمی آواتار ghasem110deh
    تاریخ عضویت
    اردیبهشت 1393
    محل زندگی
    تهران
    پست
    1,148

    نقل قول: مقاله : کد کردن فایلها با استفاده از serialization

    نقل قول نوشته شده توسط kahrizak مشاهده تاپیک

    serialization : اگر مبتدی هستید فعلا بحث serialization را کنار بگذاریدسراغ یک پروژه ساده بروید و سعی کنید آن را انجام دهید تا با پیش سوالات بیشتری برخورد کنید
    مسئله serialization را به بعد موکول کنید

    یک توضیح مختصر در باره serialization : فرض کنید چندین تابع دارید وهر تابع چند متغیر . چگونه می توانید متغیر ها را ذخیره کنید تا هنگام راه اندازی مجدد برنامه خودتان دوباره به آن متغیر ها دسترسی داشته با شد. آیا میتوانید متغیر ها را ذخیره کرد؟ جواب :بلی با استفاده از serialization ..
    آیا می دانید فوتوشاپ چگونه اطلاعات خود را ذخیره می کند و پس از اجرای دوباره از انها استفاده میکند(منظور psd.*)
    سلام به همه ...
    یعنی از این روش میشه واسه اینکار استفاده کرد :
    تصاویری که از طریق برنامه ذخیره میشن توی یه دایرکتری ، (مثلا عکس با فرمت png) دیگه قابل مشاهده نباشن !؟
    یا کارکرد دیگه ای داره !

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •