26 Ekim 2015 Pazartesi

Serialization

Serilization ile aldığım notlar aşağıda.

Binary Serialization

Java
Serialization yazısına taşıdım.

Apache Commons
Bu konuyla ilgili Apache Commons yazısına göz atabilirsiniz.

C#
BinaryFormatter Sınıfı yazısına taşıdım.

C++
C++ ile serialization desteği gelmiyor. Ancak kendi kendimize yapmak ta kolay.
Sınıfa >> operatörü eklenir ve aşağıdakina benzer bir kod kullanılır.
ifstream file("file.txt");
vector<myclass> col;
copy(istream_iterator<myclass>(file), istream_iterator<myclass>(),
                                                 back_inserter(col));
boost
boost serialization yazısına taşıdım.
 
XML Serialization 
C#
C#'ta XML serailization işlemini yerine getiren iki sınıf var. Bunlar XmlSerializer ve DataContractSerializer. DataContractSerializer daha yeni bir sınıf. İkisi arasındaki farkı okumak için buraya bakanız.

XMLSerializer
XmlSerializer sınıfı verilen nesneyi XML olarak yazar ve okuyabilir. Bu sınıf constructor metoduna
serialize veya deserialize edilecek nesnenin type bilgilerini alır. Örnek:
XmlSerializer serializer = new XmlSerializer(typeof(DataClass));
Yazma işlemi
Aşağıda hem yeni satırları doğru yazan hem de boşluklara dikkat eden XML serialization örneği var.
XMLWriterSettings writerSettings = new XMLWriterSettings();
writerSettings.NewLineHandling = NewLineHandler.Entitize;
writerSettings.Indent = true;
XMLSerializer serializer = new XMLSerializer (typeof(MyClass));
using (XMLWriter xmlWriter = XMLWriter.Create ("myfile.xml",writerSettings)){
    serializer.Serialize (writer,myClassInstance);

Okuma İşlemi
C# XMLSerializer ile Okuma yazısına taşıdım.

XMLType Annotation
Mesaj hiyerarşilerinde, temel sınıfa diğer sınıfları tanıtmak gerekir. Örnek:
[XmlType("DerivedClass1")]
class BaseClass{}

XMLIgnore Annotation
Aynı Java'daki gibi bazı nesneler XML'e çevrilmesin isteniyorsa, işaretlenebilirler. Örnek:
DataContractSerializer
Örnek yaz.

Hiç yorum yok:

Yorum Gönder