C# Serileştirme
-
Merhaba Arkadaşlar,
C# ta serileştirme işleminin normal dosyayı klasöre kaydetmekle ne farkı var.
performans farkı var mı?
yada neden serileştirmeliyim dosyalarımı?
Soruyu soramamış olabilirim herhalde tam anlamadım bu konuyu :)
yardımlarınız için şimdiden teşekkürler.
-
Serileştirmesiz:
Dosyayı oku, okuduğun metni parçala, tüm parçalar için nesnenin kurucusunu çağır...
Serileştirme:
Dosyayı oku, nesneleri al.
http://www.dotnetperls.com/serialize-list
-
selamlar,
tam anlamadım ama şöyle basitçe bir şeyler açıklayayım..
Elinde bir sınıfın var hocam ve bu sınıfındaki verileri kaydetmek istiyorsun, bu verileri normal txt dosyasında da saklayabilirsin ama kendi "yapı" nı kurman gerekiyor, ona göre de kod yazacaksın. Mesela atıyorum ayraç olarak virgül kullandıysan ona göre verilerini okurken ve nesnene atarken bunu gözönünde bulundurmalısın, peki buradaki esneklik ne kadar?
birine servis yazdın diyelim ve bu oluşturduğun yapıya kayıtlı olan X sınıfı da sundun. Şimdi bu kişi bu xml i kullanarak tekrar kod yazarak X sınıfndan yaratılmış bir nesneye atamak zorunda (senin yaptığın struct a bağlı kalarak tekrar kod yazacak), ama bu oluşturduğun dosya XML türünden bir serilize geçirmişse, bu kişinin yapacağı şey sadece dosyanın parametresini verip deserilize edip X classının örneğine atamak. Bu şekilde standardizasyon yakalamış olursun.
Bunun haricinde, istediğin şekilde nesneleri serilizeye dahil edip etmeme senin elinde ve bunu deserilizede sıkıntısız halledebiliyorsun. Mesela X class ında a,b,c de diye property lerin olsun ama sen c nin serilize olmasını istemiyorsun, bunu hariç tutma şansın var. Deserilize ederken de c nin bir değer olmadığı için sorun olmadan tekrar değerleri okuyabilirsin, başka bir zaman da b yi dışında tutmak istersen, yapacağın iş sadece class ındaki b properysini NonSerialized etiketi ile etiketlemen. Bunun dışında başka bir şeyle uğraşmana gerek yok.
Yine başka bir örnek verirsem, X classındaki propertyler a,b,c olsun ama sonra d,e,f diye başka proprtyler de ekledin ve bunlardan bazıları da custom class list. Yani başka bir sınıftaki öğeleri barındıran listeler.. Bunu elle kaydetmen, yapısını kendin oluşturman gayet uğraştırıcı bir şey. Ama serilize işleminde hiç bir şey yapmana gerek yok, d,e,f yi ekle class ına o kadar.. Herhangi bir kod yazamana gerek yok serilize ya da deserilize için.
Bunun gibi avantajları var. Küçük projelerde önemsiz görünse de büyük projelerde önem kazanıyor, özellikle complex bir class a sahipsen ve değişim sürekliyse ve projede başka kişiler de çalışıyorsa mantıklı olan yol budur.
umarım açıklayabilmişimdir
-
classinin her alanini tek tek okuyup alt classlarina da tek tek girip dosyaya yazmak istemiyorsan serilestirmen lazim.
Performans farki tabiki var cunku daha alt katmanda bitiriyor isi
-
aslında bir nevi nosql gibi bişey oluyur değil mi?
-
ilginç benzetme ama evet öyle düşünebilirsin :) belirli bir yapıda kaydediyor ve metin tabanlı
