1. CZYM JEST SERIALIZACJA



Podobne dokumenty
Wykład 6 Dziedziczenie cd., pliki

UML a kod w C++ i Javie. Przypadki użycia. Diagramy klas. Klasy użytkowników i wykorzystywane funkcje. Związki pomiędzy przypadkami.

Katalog książek cz. 2

Strumienie i serializacja

Programowanie obiektowe w VB cz 2

JAX-RS czyli REST w Javie. Adam Kędziora

Instrukcja obsługi User s manual

Instrukcja laboratoryjna cz.3

UML a kod. C++, Java i C#

Instrukcja konfiguracji usługi Wirtualnej Sieci Prywatnej w systemie Mac OSX

Krok po kroku... (czyli jak stworzyć i wydrukować krzyżówkę)

Michał Jankowski. Remoting w.net 2.0

Programowanie obiektowe

Języki programowania imperatywnego

Marcin Luckner Politechnika Warszawska Wydział Matematyki i Nauk Informacyjnych

Programowanie obiektowe

Platformy Programistyczne Zagadnienia sieciowe i wątki

Testy jednostkowe - zastosowanie oprogramowania JUNIT 4.0 Zofia Kruczkiewicz

Camspot 4.4 Camspot 4.5

Programowanie obiektowe

Laboratorium 7 Blog: dodawanie i edycja wpisów

Business Intelligence Beans + Oracle JDeveloper

Kurs programowania. Wykład 13. Wojciech Macyna. 14 czerwiec 2017

Programowanie obiektowe

Baza danych sql. 1. Wprowadzenie. 2. Repozytaria generyczne

On-Board Unit (OBU) Rejestracja. Spis treści Logowanie... 1

Enkapsulacja, dziedziczenie, polimorfizm

Wprowadzenie do projektu QualitySpy

Instrukcja 2 Laboratorium z Podstaw Inżynierii Oprogramowania

Programowanie obiektowe

Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 3. Karol Tarnowski A-1 p.

Model semistrukturalny

LK1: Wprowadzenie do MS Access Zakładanie bazy danych i tworzenie interfejsu użytkownika

Programowanie w Sieci Internet Blok 2 - PHP. Kraków, 09 listopada 2012 mgr Piotr Rytko Wydział Matematyki i Informatyki

Laboratorium - Poznawanie FTP

Projekt z przedmiotu Specjalizowane języki programowania Temat: Zastosowanie programowania obiektowego w środowisku LabView

Klasy i obiekty cz II

Zadanie polega na stworzeniu bazy danych w pamięci zapewniającej efektywny dostęp do danych baza osób.

Programowanie Komponentowe WebAPI

Platforma.NET Wykład 9 Obsługa standardu XML

Rozdział 3. Zapisywanie stanu aplikacji w ustawieniach lokalnych

Zmiany techniczne wprowadzone w wersji Comarch ERP Altum

1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie?

Jak skonfigurować bezpieczną sieć bezprzewodową w oparciu o serwer RADIUS i urządzenia ZyXEL wspierające standard 802.1x?

akademia androida Składowanie danych część VI

Java Zadanie 1. Aby poprawnie uruchomić aplikację desktopową, należy zaimplementować główną metodę zapewniającą punkt wejścia do programu.

Wybieramy File->New->Project Wybieramy aplikację MFC->MFC Application jak na rysunku poniżej:

Instrukcja migracji PREMIUM. Mendeley_Migration_Guide_Polish.indd 1

Instrukcja obsługi programu altbackup

Informacje wstępne Autor Zofia Kruczkiewicz Wzorce oprogramowania 4

WSNHiD, Programowanie 2, Lab. 3. Trwałość danych

Podsumowanie. Uwaga. Przygotowanie

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Kontrola topto. 1. Informacje ogólne. 2. Wymagania sprzętowe i programowe aplikacji. 3. Przykładowa instalacja topto. 4. Komunikacja.

Wykład 4: Klasy i Metody

Podstawowe informacje o technologii Java Persistence API - przykład

Kurs rozszerzony języka Python

GEO-INFO V Konwerter formatów TANGO i SHAPE wer

Wykład 9 Kolekcje, pliki tekstowe, Przykład: Notatnik

Firma Informatyczna ASDER. Prezentacja. Serwer danych lokalnych. Przemysław Kroczak ASDER

XML w.net. Dominik Baś nr alb Wrocław, 29 maja 2007

Programowanie obiektowe

Informatyka II. Laboratorium.

Instrukcja podwaja zarobki osób, których imiona zaczynają się P i dalsze litery alfabetu zakładamy, że takich osbób jest kilkanaście.

Ciekawym rozwiązaniem służącym do obsługi zdarzeń dla kilku przycisków w ramach jednej aktywności może być następujący kod:

Szkolenie Microsoft Lync Korzystanie z roli pełnomocnika

Podstawy programowania. Wykład PASCAL. Wstęp do programowania obiektowego. dr Artur Bartoszewski - Podstawy programowania, sem.

Instrukcja użytkownika. Aplikacja Smart Paczka DPD

Konstruktory. Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut.

Programowanie obiektowe

Metody dostępu do danych

Programowanie obiektowe

Oracle Application Express

Wzorce dystrybucji i wspólbieżności autonomicznej

Programowane refleksyjne i serializacja

Modele danych walidacja widoki zorientowane na model

Office 365 Midsize Business

Materiały do zajęć VII

Zaawansowany kurs języka Python

Dzisiejszy wykład. Wzorce projektowe. Visitor Client-Server Factory Singleton

Aplikacje RMI Lab4

Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu.


Narzędzia i aplikacje Java EE. Usługi sieciowe Paweł Czarnul pczarnul@eti.pg.gda.pl

Tworzenie i wykorzystanie usług sieciowych

Przykładowa implementacja

Zaawansowane programowanie w języku C++ Programowanie obiektowe

Kurs WWW. Paweł Rajba.

Programowanie obiektowe Wykład 6. Dariusz Wardowski. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/14

Platforma.NET Wykład 9 Obsługa standardu XML. Spis treści. Plan wykładu spotkania tydzień po tygodniu. Plan wykładu tydzień po tygodniu.

Programowanie współbieżne Wykład 8 Podstawy programowania obiektowego. Iwona Kochaoska

.NET Klasy, obiekty. ciąg dalszy

PROE wykład 2 operacje na wskaźnikach. dr inż. Jacek Naruniec

Wstęp do programowania obiektowego. Wykład 2

Programowanie i struktury danych. Wykład 4 Dr Piotr Cybula

Curiously recurring template pattern

Dokumentacja do API Javy.

Bezpieczne uruchamianie apletów wg

Transkrypt:

SERIALIZACJA

O CZYM POWIEMY? 1. Czym jest serializacja? 2. Jak przeprowadzić proces serializacji? 3. Jak przeprowadzić proces deserializacji? 4. Serializacja własnych klas. 5. Dobre praktyki. 6. SoapFormatter. 7. Kiedy SoapFormater a kiedy BinaryFormatter? 8. Użycie SoapFormater. 9. Serializacja XML. 10. Własna implementacja serialiazacji. 11. Podsumowanie wad i zalet serializacji.

1. CZYM JEST SERIALIZACJA Proces konwersji obiektu na strumień danych, dzięki czemu możemy w łatwy sposób przesłać stan obiektu przez sieć lub zapisać na dysku. Z pojęciem serializacji związane jest pojęcie deserializacji czyli procesu pozwalającego na odtworzenie stanu obiektu z bajtów zapisanych na dysku bądź przesłanych przez internet.

2. JAK PRZEPROWADZIĆ PROCES SERIALIZACJI? 1. Tworzymy strumień do zapisu zserializowanego obiektu. 2. Tworzymy obiekt klasy BinaryFormatter 3. Wywołujemy metodę Serialize klasy BinaryFormatter, której jako parametry przekazujemy obiekt który chcemy serializować oraz strumień do serializacji.

3. JAK PRZEPROWADZIĆ PROCES DESERIALIZACJI? 1. Tworzymy strumień do odczytu zserializowanego obiektu 2. Tworzymy obiekt klasy BinaryFormatter 3. Tworzymy nowy obiekt do przechowania odczytanych danych 4. Wywołujemy metodę Deserialize klasy BinaryFormatter, której jako parametr przekazujemy strumień do deserializacji. Metoda Deserialize zwraca object, należy więc nie zapomnieć o rzutowaniu.

DEMO 1

4. SERIALIZACJA WŁASNYCH KLAS. Aby napisana przez nas klasa mogła być serialozwana, należy nadać jej atrybut Serializable: [Serializable] class MyClass { //... } Serializacji podlegają wszystkie pola (nawet te prywatne). Aby wyodrębnić pola, które mają jej nie podlegać, należy przed polem użyć atrybutu NonSerialized. Dzięki atrybutowi OptionalField można zachować kompatybilność pomiędzy wersjami. W przypadku gdy pole dodaliśmy, a w poprzedniej wersji programu nie było go, po serializacji w polu znajdzie się null (zapobiega wyrzuceniu wyjątku).

DOBRE PRAKTYKI Nie usuwaj z klasy pola, które było serializowane Nie dodawaj znacznika NonSerialized do pól, które w poprzedniej wersji nie miały tego atrybutu. Nie zmieniaj nazwy serializowanego pola Kiedy dodajesz nowe pole do serializowanej klasy dodaj mu atrybut OptionalField Kiedy usuwasz atrybut NonSerialized w klasie, która była już serializowana, dodaj do tego pola atrybut OptionalField Dla opcjonalnych pól, w przypadku gdy chcesz aby po deserializacji miały one inne wartości niż 0 i null użyj metody

DEMO 2

6. SOAPFORMATTER W przeciwieństiwe do BinaryFormatter, Soap formater zapisuje dane do pliku w formacie XML. Dzięki takiemu sposobowi zapewniamy naszej aplikacji niezależność od używanego systemu a także zapewniamy łatwą wymianę danych poprzez internet (Webserwisy).

7. KIEDY SOAPFORMATER A KIEDY BINARYFORMATTER? BinaryFormatter: Użytkownicy korzystają z oprogramowania napisanego na platformę.net SoapFormatter Nasi klienci korzystają z różnych platform Dane przesyłamy poprzez internet

8. UŻYCIE SOAPFORMATER 1. Dodajemy referencję do biblioteki: System.Runtime.Serialization.Formatters.Soap.dll 2. Reszta kodu wygląda tak samo jak w przypadku BinaryFormatter z tym że zamiast klasy BinaryFormatter używamy SoapFormatter. Atrybuty, które możemy użyć na polach klasy: SoapAttribute SoapEnum SoapDefaultValue SoapIgnore SoapElement SoapType

DEMO 3

9. SERIALIZACJA XML Dlaczego serializować obiekty do XML: Niezależność i przenośność Łatwa edycja Lepsza kompatybilność Ograniczenia serializacji XML: Serializować można tylko dane publiczne Nie można serializować obiektów złożonych z innych obiektów (tzw. grafów obiektów) W klasie musi istnieć konstruktor domyślny

PRZEBIEG 1. Tworzymy strumień (TextWriter lub XmlWriter) 2. Tworzymy obiekt klasy XmlSerializer a w jego konstruktorze podajemy typ serialozowanego obiektu. Atrybuty które można przypisać publicznym polom serialozwanej klasy: XmlAnyAttribute XmlElement XmlAnyElement XmlEnum XmlArray XmlIgnore XmlArrayItem XmlInclude XmlAttribute XmlRoot XmlChoiceIdentifier XmlText XmlType

DEMO 4

10. WŁASNA IMPLEMENTACJA SERIALIZACJI Własna implementacja serializacji zapewnia kompatybilność z poprzednimi wersjami serializacji. (Dodanie, usunięcie pól w klasach itp.). Przebieg implementacji własnej serializacji: Implementujemy metodę GetObject interfejsu Iserializable Dodajemy do kolekcji SerializationInfo pary klucz i wartość Tworzymy konstruktor do deserializacji: protected Person(SerializationInfo info, StreamingContext context) Następnie postępujemy jak przy serializacji binarnej.

ZDARZENIA SERIALIZACJI TYLKO DLA BINARYFORMATTER

DEMO 5

PODSUMOWANIE WAD I ZALET SERIALIZACJI. Zalety: Łatwe przenoszenie informacji pomiędzy aplikacjami Możliwość ręcznej modyfikacji serializowanych plików (XML) Najlepszy zamiennik w przypadku braku bazy danych. Wady: Zużycie zasobów komputera Ryzyko utraty ważnych danych (XML) Problem z prywatnymi polami i klasami w serializacji XML

1. Which of the following are required to serialize an object? (Choose all that apply.) A. An instance of BinaryFormatter or SoapFormatter B. File permissions to create temporary files C. Microsoft Internet Information Services (IIS) D. A stream object

2. Which of the following attributes should you add to a class to enable it to be serialized? A. ISerializable B. Serializable C. SoapInclude D. OnDeserialization

3. Which of the following attributes should you add to a member to prevent it from being serialized by BinaryFormatter? A. NonSerialized B. Serializable C. SerializationException D. SoapIgnore

4. Which of the following interfaces should you implement to enable you to run a method after an instance of your class is deserialized? A. IFormatter B. ISerializable C. IDeserializationCallback D. IObjectReference

1. Which of the following are requirements for a class to be serialized with XML serialization? (Choose all that apply.) A. The class must be public. B. The class must be private. C. The class must have a parameterless constructor. D. The class must have a constructor that accepts a SerializationInfo parameter.

2. Which of the following attributes would you use to cause a member to be serialized as an XML attribute, rather than as an XML element? A. XmlAnyAttribute B. XmlType C. XmlElement D. XmlAttribute

3. Which tool would you use to help you create a class that, when serialized, would produce an XML document that conformed to an XML schema? A. Xsd.exe B. Xdcmake.exe C. XPadsi90.exe D. Xcacls.exe

4. Which of the following attributes should you add to a member to prevent it from being serialized by XML serialization? A. XmlType B. XmlIgnore C. XmlElement D. XmlAttribute