Serializacja klas C# .NET Compact urządzenia mobilne

Zaczynamy od wyjaśnienia co to w ogóle jest serializacja.


Serializacja – w programowaniu komputerów proces przekształcania obiektów, tj. instancji określonych klas, do postaci szeregowej, czyli w strumień bajtów, z zachowaniem aktualnego stanu obiektu. Serializowany obiekt może zostać utrwalony w pliku dyskowym, przesłany do innego procesu lub innego komputera poprzez sieć. Procesem odwrotnym do serializacji jest deserializacja. Proces ten polega na odczytaniu wcześniej zapisanego strumienia danych i odtworzeniu na tej podstawie obiektu klasy wraz z jego stanem bezpośrednio sprzed serializacji.
Serializacja służy do zapisu stanu obiektu, a później do odtworzenia jego stanu. Mechanizm ten jest używany między innymi na platformach: .NET, Java, PHP, Python, Ruby.

Źródło
 

Idę tego post-a jest pokazanie jak na urządzeniach mobilnych, np. z systemem operacyjnym Windows CE (Embedded), radzić sobie z serializacją. Wiadomo, że na urządzeniach mobilnych mamy do czynienia z .NET Compact Framework, a nie z pełnym .NET Framework. A właśnie na: .NET Compact Framework, nie mamy dostępu do namespace:
using System.Runtime.Serialization.Formatters.Binary,
które jest niezbędne do korzystania z serializacji. Dokładnie to, aby serializować obiekty (klasy) potrzeba nam między innymi klasy: BinaryFormatter, który właśnie jest w tej przestrzeni.
Więcej czytaj: tutaj.

Można temu zaradzić!, Ufff..

Skorzystamy z darmowej do zastosowań komercyjnych biblioteki: compactformatterplus.
Poniżej link do niej i do jej twórców. [Swoją drogą jest tam dużo użytecznych darmowych do zastosowań komercyjnych bibliotek dla .NET i .NETCF]
Uwaga - aby ja pobrać wystarczy darmowa rejestracja.
https://www.codeproject.com/Articles/21518/CompactFormatterPlus-Generic-Serializer-for-Full-a


Ja teraz dokładnie opiszę i podam przykłady jak jej używać, gdyż Twórcy tej biblioteki dają tylko same źródła bez przykładów, a na stronie WWW też nie ma przykładów.


Biblioteka składa sie z trzech projektów stanowiących integralną całość.
Są to: ADOHelper, ISerial, CompactFormatterPlus.

Każdy z tych projektów należy dołączyć do Swojego głównego projektu dla którego piszemy software na urządzenie mobilne.
Dlaczego - bo oczywiście można by skompilować cały projekt, składający się z: ADOHelper, ISerial, CompactFormatterPlus i po kompilacji otrzymać trzy biblioteki dll - które można by potem dołączyć do Naszego projektu, ale zarówno Twórcy biblioteki [jest o tym wzmianka w linku, który udostępniłem], jak i Microsoft nie zaleca umieszczać bibliotek dll na urządzeniach mobilnych dlatego, że: w większości urządzeń mobilnych one po prostu nie działają, albo mogą powodować niewłaściwe działanie Naszego software.

Czyli dołączyliśmy te trzy projekty do Naszego projektu - warto zrobić sobie osobny folder w Naszym projekcie, np. Extenstions. Teraz wykonujemy Rebuild z wybranym: Set As StartUp Project ustawionym na Nasz główny projekt.
Po tej czynności dodajemy do Naszego głównego projektu w References trzy referencje z zakładki Naszego Projektu: ADOHelper, ISerial, CompactFormatterPlus.


I już mamy prawie koniec.
Teraz pozostał Nam sam kod.


ZAPIS INSTANCJI OBIEKTU DO PLIKU BINARNEGO:
ODCZYT INSTANCJI OBIEKTU Z PLIKU BINARNEGO:
Dodatkowy potrzebny kod:

Myślę, że problem serializacji na urządzenia mobilne został rozwiązany. Rozwiązując ten problem zyskaliśmy możliwość zapisywania do plików binarnych struktur i klas, czyli możemy tworzyć plikowe binarne baz danych.


Przykład użycia program:
( Zapis klas obiektów do plików w C#)
- dla urządzeń mobilnych.