Serialisierung: Unterschied zwischen den Versionen

Aus Das Sopra Wiki
Jan (Diskussion | Beiträge)
Keine Bearbeitungszusammenfassung
LeonH (Diskussion | Beiträge)
Keine Bearbeitungszusammenfassung
 
(8 dazwischenliegende Versionen von 5 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
{{review}}
{{review}}
{{löschen}}
{{Navi:Implementierung}}
{{Navi:Implementierung}}
Serialisierung<ref name="RunTimeRerial">http://msdn.microsoft.com/en-us/magazine/cc301761.aspx Jeffrey Richter: Run-time Serialization</ref> bezeichnet den Vorgang, ein [[Objekt]] in einen Datenstrom umzuwandeln. Dieser kann dann dann als auf einer Festplatte gespeichert oder über ein Netzwerk übertragen werden. C# stellt dafür Klassen bereit.
Serialisierung<ref name="RunTimeRerial">http://msdn.microsoft.com/en-us/magazine/cc301761.aspx Jeffrey Richter: Run-time Serialization</ref> bezeichnet den Vorgang, ein [https://docs.microsoft.com/de-de/dotnet/api/system.object?view=netcore-3.1 Objekt] in einen Datenstrom umzuwandeln. Dieser kann dann als auf einer Festplatte gespeichert oder über ein Netzwerk übertragen werden. C# stellt dafür Klassen bereit.


== Formate ==
== Formate ==
Zeile 44: Zeile 45:
public class UnitAi
public class UnitAi
{
{
   pubilc StateMachineState state;
   public StateMachineState state;
   private int abc;
   private int abc;
}
}
</source>
</source>
Wenn eine Instanz dieser Klasse serialisiert und gespeichert wird, werden folgende Daten gespeichert:
Wenn eine Instanz dieser Klasse serialisiert und gespeichert wird, werden folgende Daten gespeichert:
* beim BinaryFormatter
* Beim BinaryFormatter
** der Integer <tt>hitPoints</tt>
** Der Integer <tt>hitPoints</tt>
** das Strukt <tt>position</tt> mit seinen Feldern
** Das Strukt <tt>position</tt> mit seinen Feldern
** die Referenz <tt>unitAi</tt> und die Instanz auf die sie zeigt. Und entsprechend dann auch deren Felder <tt>state</tt> und <tt>abc</tt>.
** Die Referenz <tt>unitAi</tt> und die Instanz auf die sie zeigt. Und entsprechend dann auch deren Felder <tt>state</tt> und <tt>abc</tt>.
* beim XmlSerializer
* Beim XmlSerializer
** der Integer <tt>hitPoints</tt>
** Der Integer <tt>hitPoints</tt>
** das Strukt <tt>position</tt> mit seinen Feldern
** Das Strukt <tt>position</tt> mit seinen Feldern
Die Referenz <tt>unitAi</tt> wird nicht serialisiert, da sie als private deklariert ist [[Kategorie:Code-Beispiele]]
** Die Referenz <tt>unitAi</tt> wird nicht serialisiert, da sie als private deklariert ist [[Kategorie:Code-Beispiele]]


== Referenzen ==
== Referenzen ==
Zeile 86: Zeile 87:
     // Immer den Stream schliessen
     // Immer den Stream schliessen
     if (fs != null)
     if (fs != null)
      {
    {
        fs.Close();
      fs.Close();
      }
     }
     }
   }
   }
Zeile 146: Zeile 146:
     // Immer den Stream schliessen
     // Immer den Stream schliessen
     if (fs != null)
     if (fs != null)
      {
    {
        fs.Close();
      fs.Close();
      }
     }
     }
   }
   }
Zeile 186: Zeile 185:
Man kann mit Serialisierung auch Daten über ein Netzwerk schicken. Das Prinzip ist das gleiche, da die Formatter auf Streams arbeiten. Was für einen Stream man nimmt ist ihnen egal. Für Netzwerkfunktionalität bieten sich entweder die speziellen [[XNA]]-Klassen dafür an, oder man schreibt die Funktionalität selbst. Dies ist flexibler und man braucht keinen [[XBox 360|XBox-Live]]-Account. Dafür funktioniert sie auf der XBox nicht.
Man kann mit Serialisierung auch Daten über ein Netzwerk schicken. Das Prinzip ist das gleiche, da die Formatter auf Streams arbeiten. Was für einen Stream man nimmt ist ihnen egal. Für Netzwerkfunktionalität bieten sich entweder die speziellen [[XNA]]-Klassen dafür an, oder man schreibt die Funktionalität selbst. Dies ist flexibler und man braucht keinen [[XBox 360|XBox-Live]]-Account. Dafür funktioniert sie auf der XBox nicht.


Die nötigen Klassen finden sich im [[Namespace]]
Die nötigen Klassen finden sich im [[Namensraum]]
  System.Net.Sockets
  System.Net.Sockets


Zeile 220: Zeile 219:
* Leistungsfähiger als die beiden oben ist der SoapFormatter
* Leistungsfähiger als die beiden oben ist der SoapFormatter


== Video Tutorial ==
{{BA|Vogty|hier befand sich noch ein Abschnitt "Video Tutorial" bestehend aus einer Verlinkung auf ein MSDN Video, dieses existiert aber nicht mehr, ich habe den Abschnitt entfernt}}
Auf MSDN gibt es auch einen Webcast zum Thema<ref name="SerWebcast">http://msevents.microsoft.com/cui/WebCastEventDetails.aspx?EventID=1032292924&EventCategory=3&culture=en-US&CountryCode=US MSDN Webcast: Advanced Serialization (Level 300)</ref><noinclude>


== Referenzen ==
== Referenzen ==