PDA

View Full Version : سوال: سریال سازی



victoria
یک شنبه 25 بهمن 1388, 20:32 عصر
سلام:لبخند:
کسی میتونه راهنماییم کنه که سریال سازی یک کلاس چه فایده ای داره و اصلا برای چی باید این کارو انجام بدی؟؟؟:گیج:

vahid.bz
یک شنبه 25 بهمن 1388, 22:35 عصر
سلام
شما فرض كن مي خواي برنام اي براي يك شركت بنويسي كه رييس شركت بتونه توي اون برنامه وقتي كارمندي استخدام مي كنه اون كارمند و با اطلاعاتش ذخيره كنه علاوه براين بتونه حذف كنه يا اطلا عات كارمند رو تغيير بده
خب شما اول يه كلاس مي سازي با نام كارمند كه متغير هاي شييش همون اطلاعات كارمند ميشن بعد براي اينكه اونا رو روي فايل ذخيره كني بايد serializable كني تا بتوني بعدآ از روي فايل اين اطلاعات رو بخوني
در مورد چطور serializableكردن سوالي نكردي اما اگه خواستي برات نمونه كدهاشو ميذارم

seven7777777
یک شنبه 25 بهمن 1388, 22:46 عصر
یعنی این عمل به نوعی فرمت کلاس رو به قالب قابل ذخیره در فایل تبدیل می کنه یا یه جور کدینگ خاصه ؟؟؟

vahid.bz
یک شنبه 25 بهمن 1388, 22:56 عصر
اطلاعات رو طبق الگوريتم سازنده به صورت جرياني از بايت ها تو فايل ذخيره مي كنه كه البته نيازي نيست استفاده كننده بدونه كه چطوري اطلاعات رو به صورت جرياني از بايتها تبديل مي كنه.

victoria
دوشنبه 26 بهمن 1388, 10:28 صبح
سلام
شما فرض کن می خوای برنام ای برای یک شرکت بنویسی که رییس شرکت بتونه توی اون برنامه وقتی کارمندی استخدام می کنه اون کارمند و با اطلاعاتش ذخیره کنه علاوه براین بتونه حذف کنه یا اطلا عات کارمند رو تغییر بده
خب شما اول یه کلاس می سازی با نام کارمند که متغیر های شییش همون اطلاعات کارمند میشن بعد برای اینکه اونا رو روی فایل ذخیره کنی باید serializable کنی تا بتونی بعدآ از روی فایل این اطلاعات رو بخونی
در مورد چطور serializableکردن سوالی نکردی اما اگه خواستی برات نمونه کدهاشو میذارم
خیلی ممنون میشم اگه لطف کنید و نمونه کداشم برام بذارین.:لبخندساده:

vahid.bz
دوشنبه 26 بهمن 1388, 15:00 عصر
خب اول 4 تا كد زيررو به برنامت اضافه مي كني:

using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;
using System.Reflection;
using System.Runtime.InteropServices;
همشون لازم نيست اما اگه بخواي serializable كني توي اين 4 تا توابع خوبي هست كه كارتو راحت تر مي كنه.
بعد بايد
[Serializable] قبل از كلاست بنويسي مثل زير:

[Serializable]public class Employee
{...}
حالا برا ذخيره كردن رو فايل يه مثال برات زدم:

FileStream InfoFile = new FileStream("Information.dat", FileMode.OpenOrCreate);
InfoFile.Seek(0, SeekOrigin.End);
BinaryFormatter BinFormat = new BinaryFormatter();
BinFormat.Serialize(InfoFile, ObjEmployee);
InfoFile.Close();
و ام براي خوندن از رو فايل:

FileStream InfoFile = new FileStream("Information.dat", FileMode.Open);
BinaryFormatter BinFormat = new BinaryFormatter();
for (int i = 1; i < EmployeeIndex; i++)
BinFormat.Deserialize(InfoFile);
Employee ObjEmployee = (Employee)BinFormat.Deserialize(InfoFile);
InfoFile.Close();
اگه سوالي داشتي بازم در خدمتتم.

BILLY_Mgs
دوشنبه 26 بهمن 1388, 15:50 عصر
اگه سوالي داشتي بازم در خدمتتم.



1 سوال : EmployeeIndex را چی تعریف کردید ؟

vahid.bz
دوشنبه 26 بهمن 1388, 16:09 عصر
براي سريع شدن جستجو يه فايل ايندكس ساختم كه تواين فايل شناسه كارمند با شماره ي ركورد هر كارمند هستش
توضيح بيشتر: كارمندي با شناسه ي خودش جستجو ميشه برنامه اول توي فايل ايندكس جستجو ميكنه تا شماره ركورد كارمند مورد نظر را پيدا كند اين شماره EmployeeIndexاسمشو گذاشتم
*اگر ٍEmployeeIndexيك كارمند 5 باشه يعني توي فايل اصليمون اين كارمند پنجميه كه با
اطلا عاتش ذخيره شده

sia_2007
سه شنبه 27 بهمن 1388, 10:30 صبح
سلام دوست عزیز
ببین پورت 80 که در تمامی شبکه های دنیا باز میباشد؛ حتی در ایران ! ؛ بهترین گذرگاه برای عبور متن است.
خب شی Employee که متن نیست؛ ما آنرا سریالایز و تبدیل به متن میکنیم؛ از پورت 80 عبور میدهیم و در جایی دیگر متن را گرفته و دیسریالایز میکنیم و آبجکت Employee رو به دست میآوریم.
برای مثال اگر از سرویس Google Translator استفاده کنید؛ به شما یک رشته سریالایز شده میدهد؛ از نوع JSON ؛ شما این را در برنامه گرفته و دیسریالایز کرده و استفاده میکنید.
میشه استفاده های بهتری رو هم مثال زد
امیدوارم به دردت بخوره

victoria
سه شنبه 27 بهمن 1388, 13:24 عصر
سلام دوستان
با توجه به راهنمایی هایی که کردید من با کمک سریال سازی یه برنامه نوشتم که لیست دانشجویانو میگیره و میشه هردانشجویی را با توجه به شماره دانشجوییش دوباره جستجو کرد و اگر خواستیم در رکورد اون دانشجو تغییراتی را اعمال کنیم.
ولی حالا میخوام بدونم که همین کارو با SQl هم میتونم انجام بدم دیگه یا نه؟؟:اشتباه: