Udostępnij za pośrednictwem


Serializacja (Visual Basic)

Serializacja to proces konwertowania obiektu na strumień bajtów w celu przechowywania obiektu lub przesyłania go do pamięci, bazy danych lub pliku. Jego głównym celem jest zapisanie stanu obiektu w celu umożliwienia jego ponownego utworzenia w razie potrzeby. Proces odwrotny jest nazywany deserializacji.

Jak działa serializacja

Na tej ilustracji przedstawiono ogólny proces serializacji.

Serialization graphic

Obiekt jest serializowany do strumienia, który przenosi nie tylko dane, ale informacje o typie obiektu, takie jak jego wersja, kultura i nazwa zestawu. Z tego strumienia można go przechowywać w bazie danych, pliku lub pamięci.

Używa do serializacji

Serializacja umożliwia deweloperowi zapisanie stanu obiektu i odtworzenie go w razie potrzeby, zapewniając magazyn obiektów oraz wymianę danych. Dzięki serializacji deweloper może wykonywać akcje, takie jak wysyłanie obiektu do aplikacji zdalnej za pomocą usługi sieci Web, przekazywanie obiektu z jednej domeny do innej, przekazywanie obiektu przez zaporę jako ciąg XML lub utrzymywanie zabezpieczeń lub informacji specyficznych dla użytkownika w aplikacjach.

Tworzenie obiektu z możliwością serializacji

Aby serializować obiekt, należy serializować obiekt, strumień zawierający serializowany obiekt i .Formatter System.Runtime.Serialization zawiera klasy niezbędne do serializacji i deserializacji obiektów.

SerializableAttribute Zastosuj atrybut do typu, aby wskazać, że wystąpienia tego typu mogą być serializowane. Wyjątek SerializationException jest zgłaszany, jeśli próbujesz serializować, ale typ nie ma atrybutu SerializableAttribute .

Jeśli nie chcesz, aby pole w klasie było możliwe do serializacji, zastosuj NonSerializedAttribute atrybut . Jeśli pole typu możliwego do serializacji zawiera wskaźnik, uchwyt lub inną strukturę danych specyficzną dla określonego środowiska, a pole nie może być znacząco ponownie utworzone w innym środowisku, może być konieczne, aby było niezwiązane.

Jeśli serializowana klasa zawiera odwołania do obiektów innych klas oznaczonych jako SerializableAttribute, te obiekty również zostaną serializowane.

Serializacja binarna i XML

Można użyć serializacji binarnej lub XML. W serializacji binarnej wszystkie elementy członkowskie, nawet te, które są tylko do odczytu, są serializowane, a wydajność jest zwiększona. Serializacja XML zapewnia bardziej czytelny kod, a także większą elastyczność udostępniania obiektów i użycia w celach współdziałania.

Serializacja binarna

Serializacja binarna używa kodowania binarnego do tworzenia kompaktowej serializacji do zastosowań, takich jak strumienie sieciowe oparte na gniazdach lub magazynach.

Serializacji XML

Serializacja XML serializuje pola publiczne i właściwości obiektu lub parametry i zwracane wartości metod do strumienia XML zgodnego z określonym dokumentem języka definicji schematu XML (XSD). Serializacja XML powoduje silnie typizowane klasy z publicznymi właściwościami i polami konwertowanymi na kod XML. System.Xml.Serialization zawiera klasy niezbędne do serializacji i deserializacji XML.

Atrybuty można zastosować do klas i składowych klas, aby kontrolować sposób XmlSerializer serializacji lub deserializacji wystąpienia klasy.

Serializacja podstawowa i niestandardowa

Serializacja może być wykonywana na dwa sposoby, podstawowa i niestandardowa. Podstawowa serializacja używa .NET Framework do automatycznego serializacji obiektu.

Serializacja podstawowa

Jedynym wymaganiem w podstawowej serializacji jest to, że obiekt ma SerializableAttribute zastosowany atrybut. Może NonSerializedAttribute służyć do zachowania serializacji określonych pól.

W przypadku korzystania z podstawowej serializacji przechowywanie wersji obiektów może powodować problemy, w tym przypadku niestandardowa serializacja może być preferowana. Podstawowa serializacja to najprostszy sposób wykonywania serializacji, ale nie zapewnia dużej kontroli nad procesem.

Serializacja niestandardowa

W niestandardowej serializacji można określić dokładnie, które obiekty będą serializowane i jak zostaną wykonane. Klasa musi być oznaczona SerializableAttribute i zaimplementować ISerializable interfejs.

Jeśli chcesz również, aby obiekt był deserializowany w sposób niestandardowy, należy użyć konstruktora niestandardowego.

Serializacja projektanta

Serializacja projektanta to specjalna forma serializacji, która obejmuje rodzaj trwałości obiektu zwykle skojarzonej z narzędziami deweloperskich. Serializacja projektanta to proces konwertowania grafu obiektu na plik źródłowy, który można później użyć do odzyskania grafu obiektu. Plik źródłowy może zawierać kod, znaczniki, a nawet SQL informacje o tabeli.

Tematy pokrewne i przykłady

Przewodnik: utrwalanie obiektu w Visual Studio (Visual Basic)
Pokazuje, jak serializacja może służyć do utrwalania danych obiektu między wystąpieniami, umożliwiając przechowywanie wartości i pobieranie ich przy następnym wystąpieniu obiektu.

Instrukcje: odczytywanie danych obiektu z pliku XML (Visual Basic)
Pokazuje, jak odczytywać dane obiektów, które zostały wcześniej zapisane w pliku XML przy użyciu XmlSerializer klasy .

Instrukcje: zapisywanie danych obiektów w pliku XML (Visual Basic)
Pokazuje, jak napisać obiekt z klasy do pliku XML przy użyciu XmlSerializer klasy.