web-dev-qa-db-fra.com

Quel est le sens du concept de sérialisation dans les langages de programmation?

Quel est le sens du concept de sérialisation dans les langages de programmation?

quand on utilise l'attribut Serializable au-dessus d'une classe, quelle est la signification?

34
masoud ramezani

Supposons que deux applications fonctionnent sur deux machines physiques différentes. Les deux applications doivent échanger des données couramment utilisées par les deux applications. Ces applications communiquent entre elles pour partager les données avec certains supports. Ces supports peuvent être un système de fichiers, des connexions TCP ou UDP, ou tout autre protocole réseau approprié, ou bien un échange direct de données en mémoire. N'importe lequel de ces supports ne comprendrait que les données décrites sous la forme d'une série de bits. Ainsi, lorsqu'une application doit envoyer une valeur 10 à une autre, la valeur 10 sera envoyée en tant que représentation binaire 1010 et vous transmettriez également certaines informations décrivant 1010. Ces méta-informations seront également une série de bits que l'autre application peut comprendre facilement. C'était facile cependant.

Prenons un autre exemple, dans lequel ces deux applications doivent échanger un type de données plus complexe et non primitif. Disons qu'ils doivent échanger les objets de type Book lorsque Book est une classe définie par l'utilisateur dans votre application et que les deux applications ont la définition du type Book.

public class Book
{
    Book() { }

    public long BookId { get;set; }
    public string Author { get;set; }
    public string Title { get;set; }
}

Comment allez-vous échanger les objets de type book entre les deux applications? Pour pouvoir partager l'objet entre deux applications, vous devez être capable de convertir les objets Livre en représentation binaire. C'est là qu'intervient la sérialisation.

A l'aide de la sérialisation, vous pouvez définir comment un objet peut être converti en une représentation binaire. L'application réceptrice effectuerait le processus inverse, c'est-à-dire la désérialisation, qui construit un objet Book à partir de sa représentation binaire.

76

Il n'y a pas de meilleure explication que celle de wikipedia.

En informatique, dans le contexte de Stockage et transmission de données, la [...] sérialisation est le processus consistant à convertir une structure de données ou un objet en une séquence de bits qu'il peut être stocké dans un fichier ou une mémoire tampon, ou transmis sur un lien de connexion réseau pour être "ressuscité" plus tard dans la même ou une autre environnement informatique .

http://en.wikipedia.org/wiki/Serialization

De plus, l'attribut Serializable ne peut pas être utilisé sur les méthodes. Indiqué par l'utilisation de l'attribut

[AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Enum | AttributeTargets.Delegate, Inherited = false)]
19
Pieter Germishuys

La sérialisation est le processus de conversion d'un objet en un flux d'octets . La désérialisation est le processus opposé de Créer un objet à partir d'un flux d'octets.

La sérialisation/désérialisation est principalement utilisée pour transporter des objets (par exemple pendant la mise à distance), ou pour conserver des objets (par exemple dans un fichier ou une base de données). La sérialisation peut être définie en tant que processus de stocker l’état d’un objet sur un support de stockage . Au cours de ce processus, les champs Publics et privés de l'objet et le nom de la classe, y compris l'assembly Contenant la classe, sont convertis en un flux de Octets, qui est ensuite écrit dans un flux de données. Lorsque l'objet Est désérialisé par la suite, un clone exact de l'objet d'origine Est créé. 

plus à ce sujet: http://www.allinterview.com/showanswers/20627.html

9
Pranay Rana

La sérialisation est le processus dans lequel les données traduisant la structure de données ou l'état d'objet dans un format pouvant être stocké

1
Ajay Pandit

Pourquoi avons-nous besoin d'une sérialisation?

En langage procédural tel que Cobol ou C, il n’existe pas de concept de sérialisation. Pourquoi l’utilisons-nous alors en POO? Prenons Java. Vous avez une classe qui instancie plusieurs classes appelées Objets et vous souhaitez transmettre l'un de ces objets (valeurs actuelles des variables) sur le réseau par l'intermédiaire de Message Oriented Middleware sous forme de flux d'octets. Vous avez besoin de sérialisation et de désérialisation. Si plusieurs langues s’accordent sur ce format de flux d’octets, la sérialisation peut même permettre à des systèmes par ailleurs incompatibles d’échanger des données.

0
Siva