Premier pas avec la sérialisation

Premier pas avec la sérialisation

Aujourd’hui, je vais vous faire découvrir la sérialization binaire et xml.

1 – Qu’est-ce que la sérialisation ?

La sérialisation consiste à encoder l’état d’un objet en mémoire dans un flux de données.

2 – La sérialisation binaire

Pour commencer, il faut importer les librairies suivantes :

Imports System.IO
Imports System.Runtime.Serialization.Formatters.Binary

Dans l’exemple suivant, nous allons créer une classe comportant 2 propriétés, une fonction publique permettant la sauvegarde de l’objet en cours, et une fonction partagée permettant la lecture d’un objet déjà sérialisé.

<Serializable()> _
Public Class MaClasse
    Private _chaine1 As String
    Public Property Chaine1 As String
        Get
            Return _chaine1
        End Get
        Set(ByVal value As String)
            _chaine1 = value
        End Set
    End Property
    Private _chaine2 As String
    Public Property Chaine2 As String
        Get
            Return _chaine2
        End Get
        Set(ByVal value As String)
            _chaine2 = value
        End Set
    End Property

    Public Shared Function Load(ByVal filename As String) As MaClasse

        Dim maClasseObj As MaClasse = Nothing

        Dim serializer As New BinaryFormatter()
        Dim fs As New IO.FileStream(filename, FileMode.Open, FileAccess.Read)
        maClasseObj = serializer.Deserialize(fs)
        fs.Close()

        Return maClasseObj

    End Function

    Public Sub Save(ByVal filename As String)
        Dim serializer As New BinaryFormatter()
        Dim fs As New IO.FileStream(filename, FileMode.Create, FileAccess.Write)
        serializer.Serialize(fs, Me)
        fs.Close()
    End Sub

End Class

Pour son utilisation, c’est simple :

'Sauvegarde de l'objet.
Dim obj1 as new MaClasse()
obj1.Chaine1 = "chaine 1"
obj1.Chaine2 = "chaine 2"
obj1.Save("C:\test.dat")

'Lecture d'un objet sérialisé.
Dim obj2 as MaClasse = MaClasse.Load("C:\test.dat")

3 – La sérialisation XML

Pour la sérialisation XML, globalement c’est la même chose, il faut juste utiliser un objet différent. Reprenons le même exemple.

Imports System.IO
Imports System.Xml.Serialization

<Serializable()> _
Public Class MaClasse
    Private _chaine1 As String
    Public Property Chaine1 As String
        Get
            Return _chaine1
        End Get
        Set(ByVal value As String)
            _chaine1 = value
        End Set
    End Property
    Private _chaine2 As String
    Public Property Chaine2 As String
        Get
            Return _chaine2
        End Get
        Set(ByVal value As String)
            _chaine2 = value
        End Set
    End Property

    Public Shared Function Load(ByVal filename As String) As MaClasse

        Dim maClasseObj As MaClasse = Nothing

        Dim serializer As New XmlSerializer(GetType(MaClasse))
        Dim fs As New IO.FileStream(filename, FileMode.Open, FileAccess.Read)
        maClasseObj = serializer.Deserialize(fs)
        fs.Close()

        Return maClasseObj

    End Function

    Public Sub Save(ByVal filename As String)
        Dim serializer As New XmlSerializer(GetType(MaClasse))
        Dim fs As New IO.FileStream(filename, FileMode.Create, FileAccess.Write)
        serializer.Serialize(fs, Me)
        fs.Close()
    End Sub

End Class

Et voila ! Plutôt simple non ?

Pas de commentaire

Écrire un commentaire