Szerializáció - University of Miskolcsmid/0_iitweb/...eXtensible Markup Language Jelölo nyelv...

22
Szerializáció Tóth Zsolt Miskolci Egyetem 2014 Tóth Zsolt (Miskolci Egyetem) Szerializáció 2014 1 / 22

Transcript of Szerializáció - University of Miskolcsmid/0_iitweb/...eXtensible Markup Language Jelölo nyelv...

Page 1: Szerializáció - University of Miskolcsmid/0_iitweb/...eXtensible Markup Language Jelölo nyelv (HTML)˝ Szöveges állomány Adattárolás Hierarchikus adatstruktúra Gépi feldolgozásra

Szerializáció

Tóth Zsolt

Miskolci Egyetem

2014

Tóth Zsolt (Miskolci Egyetem) Szerializáció 2014 1 / 22

Page 2: Szerializáció - University of Miskolcsmid/0_iitweb/...eXtensible Markup Language Jelölo nyelv (HTML)˝ Szöveges állomány Adattárolás Hierarchikus adatstruktúra Gépi feldolgozásra

Tartalomjegyzék

1 Szerializációs Alapfogalmak

2 Szerializációs MegoldásokObject SzerializációXML Szerializáció

Tóth Zsolt (Miskolci Egyetem) Szerializáció 2014 2 / 22

Page 3: Szerializáció - University of Miskolcsmid/0_iitweb/...eXtensible Markup Language Jelölo nyelv (HTML)˝ Szöveges állomány Adattárolás Hierarchikus adatstruktúra Gépi feldolgozásra

Áttekintés

OsztályDefinícióMegadja:

I TulajdonságokatI ViselkedéseketI Kapcsolatokat

F Osztályokkal (Öröklodés,tartalmazás)

F Külvilággal (Interface)

Egyetlen elofordulásFájlrendszeren tárolódik

ObjektumEgyedi Entitás (oid)Típusa van (Osztály)Saját állapotMemóriát foglalMemóriában tárolódikMegszunik, értéke elvész

Tóth Zsolt (Miskolci Egyetem) Szerializáció 2014 3 / 22

Page 4: Szerializáció - University of Miskolcsmid/0_iitweb/...eXtensible Markup Language Jelölo nyelv (HTML)˝ Szöveges állomány Adattárolás Hierarchikus adatstruktúra Gépi feldolgozásra

Motiváció

Aktuális állapot megorzéseMentés

I Aktuális állapotI Összesíto adatokI Biztonság

KommunikációI Alkalmazások közöttI Hálózaton keresztül

Adatbázist nem tárgyaljuk

Tóth Zsolt (Miskolci Egyetem) Szerializáció 2014 4 / 22

Page 5: Szerializáció - University of Miskolcsmid/0_iitweb/...eXtensible Markup Language Jelölo nyelv (HTML)˝ Szöveges állomány Adattárolás Hierarchikus adatstruktúra Gépi feldolgozásra

Alternatívák

MentésSaját adatformátum

I Tömörebb (lehet)I KöltségesI Módosítás?

AdatbázisI SzerverI SzaktudásI HálózatI SQLite

KommunikációSaját fájlformátum

I HatékonyI KöltségesI Módosítás?

Saját protokollI KöltségesI BonyolultI HibalehetoségekI TuzfalakI stb.

Tóth Zsolt (Miskolci Egyetem) Szerializáció 2014 5 / 22

Page 6: Szerializáció - University of Miskolcsmid/0_iitweb/...eXtensible Markup Language Jelölo nyelv (HTML)˝ Szöveges állomány Adattárolás Hierarchikus adatstruktúra Gépi feldolgozásra

Szerializáció technika

HatékonyÁltalánosEgyszeru.Net Framework részeSzámos formátum

I BinárisI XMLI SOAP

Szerializálható elemekEgyes objektumokEgyszeru adattagokTömbökKollekciók

Tóth Zsolt (Miskolci Egyetem) Szerializáció 2014 6 / 22

Page 7: Szerializáció - University of Miskolcsmid/0_iitweb/...eXtensible Markup Language Jelölo nyelv (HTML)˝ Szöveges állomány Adattárolás Hierarchikus adatstruktúra Gépi feldolgozásra

Szerializáció

EljárásObjektum -> ByteObjektum -> TextAdott API metódusokEgyszeru konverzióFájlmuveletekMegkötések

[Serializable]

Tóth Zsolt (Miskolci Egyetem) Szerializáció 2014 7 / 22

Page 8: Szerializáció - University of Miskolcsmid/0_iitweb/...eXtensible Markup Language Jelölo nyelv (HTML)˝ Szöveges állomány Adattárolás Hierarchikus adatstruktúra Gépi feldolgozásra

Deszerializáció

EljárásByte -> ObjektumText -> ObjektumAdott API metódusokcast–olás

Tóth Zsolt (Miskolci Egyetem) Szerializáció 2014 8 / 22

Page 9: Szerializáció - University of Miskolcsmid/0_iitweb/...eXtensible Markup Language Jelölo nyelv (HTML)˝ Szöveges állomány Adattárolás Hierarchikus adatstruktúra Gépi feldolgozásra

Tartalomjegyzék

1 Szerializációs Alapfogalmak

2 Szerializációs MegoldásokObject SzerializációXML Szerializáció

Tóth Zsolt (Miskolci Egyetem) Szerializáció 2014 9 / 22

Page 10: Szerializáció - University of Miskolcsmid/0_iitweb/...eXtensible Markup Language Jelölo nyelv (HTML)˝ Szöveges állomány Adattárolás Hierarchikus adatstruktúra Gépi feldolgozásra

Objektum Szerializáció

Object -> ByteByte -> ObjectSzámos formátum

I BinárisI JSONI SOAP

[Serializable][NonSerialized]SerializationException

using System;

[Serializable]class Person{...}

Tóth Zsolt (Miskolci Egyetem) Szerializáció 2014 10 / 22

Page 11: Szerializáció - University of Miskolcsmid/0_iitweb/...eXtensible Markup Language Jelölo nyelv (HTML)˝ Szöveges állomány Adattárolás Hierarchikus adatstruktúra Gépi feldolgozásra

IFormatter

System.Runtime.SerializationInterfaceSzerializált objektumok formázása.

void Serialize( Stream serializationStream, Objectgraph);

Object Deserialize( Stream serializationStream);

Tóth Zsolt (Miskolci Egyetem) Szerializáció 2014 11 / 22

Page 12: Szerializáció - University of Miskolcsmid/0_iitweb/...eXtensible Markup Language Jelölo nyelv (HTML)˝ Szöveges állomány Adattárolás Hierarchikus adatstruktúra Gépi feldolgozásra

BinaryFormatter

System.Runtime.Serialization.Formatters.BinaryBináris formázásObject -> ByteEgyszeru[ Serializable ] attribútum

Tóth Zsolt (Miskolci Egyetem) Szerializáció 2014 12 / 22

Page 13: Szerializáció - University of Miskolcsmid/0_iitweb/...eXtensible Markup Language Jelölo nyelv (HTML)˝ Szöveges állomány Adattárolás Hierarchikus adatstruktúra Gépi feldolgozásra

Öröklodés

Osztályok közötti hierarchiaKiterjesztésHatással van a szerializációraOst is kell szerializálni

[Serializable]class C1 {...}

[Serializable]class C2 : C1 {...}

Tóth Zsolt (Miskolci Egyetem) Szerializáció 2014 13 / 22

Page 14: Szerializáció - University of Miskolcsmid/0_iitweb/...eXtensible Markup Language Jelölo nyelv (HTML)˝ Szöveges állomány Adattárolás Hierarchikus adatstruktúra Gépi feldolgozásra

Példa

using System;

[Serializable]class Person{

private string _name;private double _salary;

public Person(string name, double salary) {...}public override string ToString() {...}

}

Tóth Zsolt (Miskolci Egyetem) Szerializáció 2014 14 / 22

Page 15: Szerializáció - University of Miskolcsmid/0_iitweb/...eXtensible Markup Language Jelölo nyelv (HTML)˝ Szöveges állomány Adattárolás Hierarchikus adatstruktúra Gépi feldolgozásra

Serialization Példa

Person p = new Person("John Doe",100);Stream outputStream = new

FileStream(BinFile,FileMode.Create);BinaryFormatter bf = new BinaryFormatter();//Serializaitonbf.Serialize(outputStream,p);outputStream.Close();//DeserializtaionStream inputStream = File.OpenRead(BinFile);p = (Person) bf.Deserialize(inputStream);outputStream.Close();

Tóth Zsolt (Miskolci Egyetem) Szerializáció 2014 15 / 22

Page 16: Szerializáció - University of Miskolcsmid/0_iitweb/...eXtensible Markup Language Jelölo nyelv (HTML)˝ Szöveges állomány Adattárolás Hierarchikus adatstruktúra Gépi feldolgozásra

Tartalomjegyzék

1 Szerializációs Alapfogalmak

2 Szerializációs MegoldásokObject SzerializációXML Szerializáció

Tóth Zsolt (Miskolci Egyetem) Szerializáció 2014 16 / 22

Page 17: Szerializáció - University of Miskolcsmid/0_iitweb/...eXtensible Markup Language Jelölo nyelv (HTML)˝ Szöveges állomány Adattárolás Hierarchikus adatstruktúra Gépi feldolgozásra

XML Adattárolás

eXtensible Markup LanguageJelölo nyelv (HTML)Szöveges állományAdattárolásHierarchikus adatstruktúraGépi feldolgozásra

ElterjedtXHTMLBeállítások tárolásaAndroidSOAP...

Tóth Zsolt (Miskolci Egyetem) Szerializáció 2014 17 / 22

Page 18: Szerializáció - University of Miskolcsmid/0_iitweb/...eXtensible Markup Language Jelölo nyelv (HTML)˝ Szöveges állomány Adattárolás Hierarchikus adatstruktúra Gépi feldolgozásra

XML Szerializáció

System.Xml.SerializationXmlSerializer osztályNyilvános jelzoket igényelÜres konstruktorprivate adattagpublic Propery

Nem kell [Serializable]Számos attribútum:

I XmlElementI XmlRootI XmlArrayI XmlArrayItem

Tóth Zsolt (Miskolci Egyetem) Szerializáció 2014 18 / 22

Page 19: Szerializáció - University of Miskolcsmid/0_iitweb/...eXtensible Markup Language Jelölo nyelv (HTML)˝ Szöveges állomány Adattárolás Hierarchikus adatstruktúra Gépi feldolgozásra

XmlSerializer

OsztályXML szerializálásért felelXmlSerializer(Type)typeof operátorSerialize(Stream,Object)Deserialize(Stream)

Tóth Zsolt (Miskolci Egyetem) Szerializáció 2014 19 / 22

Page 20: Szerializáció - University of Miskolcsmid/0_iitweb/...eXtensible Markup Language Jelölo nyelv (HTML)˝ Szöveges állomány Adattárolás Hierarchikus adatstruktúra Gépi feldolgozásra

Példa

public class Person{private int _age;private string _name;

public string Name { get; set; }public double Salary { get; set; }

public Person() {}public Person(string name, double salary,int

age) {...}}

Tóth Zsolt (Miskolci Egyetem) Szerializáció 2014 20 / 22

Page 21: Szerializáció - University of Miskolcsmid/0_iitweb/...eXtensible Markup Language Jelölo nyelv (HTML)˝ Szöveges állomány Adattárolás Hierarchikus adatstruktúra Gépi feldolgozásra

Példa

Person p = new Person("John Doe",100,25);XmlSerializer serializer = new

XmlSerializer(typeof(Person));var file = new FileInfo("person.xml");

//serializationStream outputStream = file.OpenWrite();serializer.Serialize(outputStream,p);outputStream.Close();

//deserializationStream inputStream = file.OpenRead();p = (Person) serializer.Deserialize(inputStream);inputStream.Close();

Tóth Zsolt (Miskolci Egyetem) Szerializáció 2014 21 / 22

Page 22: Szerializáció - University of Miskolcsmid/0_iitweb/...eXtensible Markup Language Jelölo nyelv (HTML)˝ Szöveges állomány Adattárolás Hierarchikus adatstruktúra Gépi feldolgozásra

Példa

<?xml version="1.0"?><Personxmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:xsd="http://www.w3.org/2001/XMLSchema">

<Name>John Doe</Name><Salary>100</Salary>

</Person>

Tóth Zsolt (Miskolci Egyetem) Szerializáció 2014 22 / 22