Szerializáció - University of Miskolcsmid/0_iitweb/...eXtensible Markup Language Jelölo nyelv...
Transcript of Szerializáció - University of Miskolcsmid/0_iitweb/...eXtensible Markup Language Jelölo nyelv...
Szerializáció
Tóth Zsolt
Miskolci Egyetem
2014
Tóth Zsolt (Miskolci Egyetem) Szerializáció 2014 1 / 22
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
Á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
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
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
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
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
Deszerializáció
EljárásByte -> ObjektumText -> ObjektumAdott API metódusokcast–olás
Tóth Zsolt (Miskolci Egyetem) Szerializáció 2014 8 / 22
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
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
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
BinaryFormatter
System.Runtime.Serialization.Formatters.BinaryBináris formázásObject -> ByteEgyszeru[ Serializable ] attribútum
Tóth Zsolt (Miskolci Egyetem) Szerializáció 2014 12 / 22
Ö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
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
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
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
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
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
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
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
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
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