Serileştirme (C# )

Serileştirme, nesneyi depolamak veya belleği, bir veritabanı ya da bir dosyaya aktarmak için bir nesneyi bayt akışına dönüştürme işlemidir. Temel amacı, bir nesnenin durumunu gerektiğinde yeniden oluşturmak için kaydetmeyecektir. Ters işlem serisini kaldırma olarak adlandırılır.

Serileştirme çalışma şekli

Bu çizimde serileştirme işleminin genel işlemi gösterilmektedir:

Serileştirme grafiği

Nesne, verileri taşıyan bir akışa serileştirilir. Akışta Ayrıca nesnenin türü ile ilgili sürüm, kültür ve derleme adı gibi bilgiler de bulunabilir. Bu akıştan, nesne bir veritabanında, bir dosyada veya bellekte depolanabilir.

Serileştirme için kullanımlar

Serileştirme, geliştiricinin bir nesnenin durumunu kaydetmesine ve gerektiğinde, nesnelerin ve veri değişim verilerinin depolanmasını sağlayarak yeniden oluşturmasını sağlar. Bir geliştirici, serileştirme aracılığıyla şunları gibi eylemler gerçekleştirebilir:

  • Web hizmeti kullanarak nesneyi uzak uygulamaya gönderme
  • Bir etki alanından diğerine nesne geçirme
  • Bir nesneyi bir JSON veya XML dizesi olarak güvenlik duvarı üzerinden geçirme
  • Uygulamalar arasında güvenlik veya kullanıcıya özel bilgileri koruma

JSON seri hale getirme

System.Text.JsonAd alanı JavaScript nesne gösterimi (JSON) serileştirme ve serisini kaldırma için sınıflar içerir. JSON, web genelinde veri paylaşımında yaygın olarak kullanılan açık bir standarttır.

JSON serileştirme bir nesnenin ortak özelliklerini, RFC 8259 JSON belirtimineuyan bir dizeye, bayt dizisine veya akışa seri hale getirir. Bir sınıfın bir örneğini seri hale getirmenin veya seri hale getirmenin yolunu denetlemek için JsonSerializer :

İkili ve XML serileştirme

System.Runtime.SerializationAd alanı, ikili ve XML serileştirme ve seri durumdan çıkarma için sınıflar içerir.

İkili serileştirme, depolama veya soket tabanlı ağ akışları gibi kullanımlar için sıkıştırılmış serileştirme oluşturmak üzere ikili kodlama kullanır. İkili serileştirme ' de, salt okunan tüm Üyeler, hatta salt okunurdur ve performans geliştirilir.

Uyarı

İkili serileştirme tehlikeli olabilir. Daha fazla bilgi için bkz. BinaryFormatter Güvenlik Kılavuzu.

XML serileştirme, bir nesnenin ortak alanlarını ve özelliklerini veya parametrelerinin parametrelerini ve dönüş değerlerini belirli bir XML şeması tanım dili (XSD) belgesine uygun bir XML akışı olarak serileştirir. XML serileştirme, XML 'e dönüştürülen ortak özellikler ve alanlarla kesin olarak belirlenmiş sınıflarda oluşur. System.Xml.Serialization XML serileştirilmesi ve seri durumdan çıkarmak için sınıflar içerir. Sınıfın bir örneğini seri hale getirmenin veya seri hale getirmenin yolunu denetlemek için sınıflara ve sınıf üyelerine öznitelikler uygularsınız XmlSerializer .

Bir nesneyi seri hale getirilebilir hale getirme

İkili veya XML serileştirme için şunlar gerekir:

SerializableAttributeTürü örneklerinin seri hale getirilebilir olduğunu göstermek için özniteliği bir türe uygulayın. Seri hale getirme denerseniz, ancak türün özniteliği yoksa bir özel durum oluşturulur SerializableAttribute .

Bir alanın serileştirilmesi için NonSerializedAttribute özniteliğini uygulayın. Seri hale getirilebilir türdeki bir alan belirli bir ortama özel bir işaretçi, tanıtıcı veya başka bir veri yapısı içeriyorsa ve alan farklı bir ortamda anlamlı bir reconstituted değilse, bu durumda seri hale getirilebilir olmayan bir şekilde oluşturulabilir.

Serileştirilmiş bir sınıf, işaretlenmiş diğer sınıfların nesnelerine başvurular içeriyorsa SerializableAttribute , bu nesneler de serileştirilir.

Temel ve özel serileştirme

İkili ve XML serileştirme, temel ve özel olmak üzere iki şekilde gerçekleştirilebilir.

Temel serileştirme, nesneyi otomatik olarak serileştirmek için .NET kullanır. Tek gereksinim, sınıfın SerializableAttribute özniteliğin uygulanmış olması. NonSerializedAttributeBelirli alanların serileştirilme tutulmasını sağlamak için kullanılabilir.

Temel serileştirme kullandığınızda nesnelerin sürümü oluşturma sorunlar oluşturabilir. Sürüm oluşturma sorunları önemli olduğunda özel serileştirme kullanırsınız. Temel serileştirme, serileştirme gerçekleştirmenin en kolay yoludur, ancak süreç üzerinde çok fazla denetim sağlamaz.

Özel seri hale getirmek için, tam olarak hangi nesnelerin serileştirildiği ve nasıl yapılacağını belirtebilirsiniz. Sınıf işaretlenmelidir SerializableAttribute ve ISerializable arabirimini uygular. Nesnenizin bir özel şekilde seri durumdan çıkarılabilmesini istiyorsanız özel bir Oluşturucu kullanın.

Tasarımcı serileştirme

Tasarımcı serileştirme, geliştirme araçlarıyla ilişkili nesne kalıcılığı türünü içeren özel bir serileştirme biçimidir. Tasarımcı serileştirme bir nesne grafiğini, daha sonra nesne grafiğini kurtarmak için kullanılabilecek bir kaynak dosyaya dönüştürme işlemidir. kaynak dosya, kod, biçimlendirme veya hatta SQL tablo bilgisi içerebilir.

System. Text. JSON genel bakış Kitaplığın nasıl alınacağını gösterir System.Text.Json .

.Net 'TE JSON serileştirmek ve serisini kaldırma. Sınıfını kullanarak JSON 'dan ve öğesinden nesne verilerinin nasıl okunacağını ve yazılacağını gösterir JsonSerializer .

izlenecek yol: Visual Studio bir nesneyi kalıcı hale getirme (C#)
Serileştirme 'in nesnelerin örnekleri arasında bir nesne verilerini kalıcı hale getirmek için nasıl kullanılabileceğini gösterir. Bu, değerleri depolamanızı ve nesnenin bir sonraki örneklendirilmesi durumunda bunları almanızı sağlar.

XML dosyasından nesne verilerini okuma (C#)
Daha önce sınıfını kullanarak bir XML dosyasına yazılmış nesne verilerinin nasıl okunacağını gösterir XmlSerializer .

Nesne verilerini bir XML dosyasına yazma (C#)
Sınıfını kullanarak bir sınıftan XML dosyasına nesnenin nasıl yazılacağını gösterir XmlSerializer .