Содержание
- 2. Wprowadzenie (1) W przestrzeni nazw System.IO znajduje się wiele typów związanych z odczytywaniem i zapisywaniem danych.
- 3. Wprowadzenie (2) Możliwość serializacji obiektu jest kluczowa w przypadku potrzeby skopiowania obiektu na zdalną maszynę za
- 4. Serializacja obiektów
- 5. Serializacja Termin serializacja oznacza proces zapisywania (i ewentualnie transformacji) stanu obiektu w postaci serii bajtów do
- 6. Przykład zastosowania serializacji (1) Dla przykładu załóżmy, że stworzyliśmy desktopową aplikację i chcemy zapewnić sposób pozwalający
- 7. Przykład zastosowania serializacji (2) To oczywiście jest do zrobienia, ale używając mechanizmu serializacji możemy zaoszczędzić sobie
- 8. Przykład zastosowania serializacji (3)
- 9. Wewnętrzne mechanizmy Podczas gdy sam proces wykorzystania serializacji jest bardzo prosty, mechanizmy, który za nią odpowiadają
- 10. Rożne formaty serializacji Usługi serializujące platformy .NET pozwalają na utrwalanie grafu obiektu w kilku różnych formatach.
- 11. Różne strumienie Należy pamiętać, że graf obiektów możemy zapisywać do dowolnego strumienia (obiektu klasy dziedziczącej po
- 12. Rola grafu obiektów Podczas serializacji obiektu, CLR uwzględnia również wszystkie powiązane obiekty w celu zapewnienia prawidłowego
- 13. Grafy obiektów Do każdego obiektu w grafie obiektów przypisywana jest unikalna wartość liczbowa. Wartości te są
- 14. Przykład grafu obiektów (1) Dla przykładu załóżmy, że stworzyliśmy następujący zbiór klas: bazową klasę Car, która
- 15. Przykład grafu obiektów (2) Klasa JamesBosnCar posiada referencję do klasy Radio, ponieważ odziedziczyła ją po klasie
- 16. Automatyczne generowanie grafu obiektów Zaletą procesu serializacji jest to, że graf reprezentujący relacje między obiektami jest
- 17. Oznaczanie obiektów do serializacji Aby dany obiekt był dostępny dla usług serializacji platformy .NET, wystarczy oznaczyć
- 18. Przykładowe klasy (1) Dla przykładu stwórzmy kilka powiązanych klas. Pole radioID zostało oznaczone atrybutem [NonSerialized] i
- 19. Przykładowe klasy (2) Dodajemy klasę bazową posiadająca Radio oraz klasę po niej dziedziczącą.
- 20. Własności atrybutu [Serializable] (1) Atrybut [Serializable] nie jest odziedziczony po klasie bazowej. Dlatego też, w przypadku
- 21. Własności atrybutu [Serializable] (2) Jeżeli spróbujemy serializować obiekty nie oznaczone tym atrybutem używając typów BinaryFormater i
- 22. Pola prywatne, publiczne i właściwości (1) Typy BinaryFormater i SoapFormater są zaprogramowane do utrwalania wszystkich serializowalnych
- 23. Pola prywatne, publiczne i właściwości (2)
- 24. Pola prywatne, publiczne i właściwości (3) W przypadku, gdy obiekt klasy Person będziemy serializować za pomocą
- 25. Formatery serializacji
- 26. Formatery serializacji Po skonfigurowaniu typów do możliwości ich serializoacji na platformie .NET poprzez oznaczenie ich niezbędnymi
- 27. Klasa BinaryFormater Typ BinaryFormater zapisuje stan obiektu do wskazanego strumienia używając formatu binarnego. Zdefiniowany jest w
- 28. Klasa SoapFormater Typ SospFormater utrwala stan obiektu jako wiadomość w formacie SOAP. Zdefiniowany jest on w
- 29. Klasa XmlSerializer Typ SospSerializer utrwala stan obiektu w postaci dokumentu XML. Aby użyć tego typu musimy
- 30. Wspólne interfejsy Wszystkie wymienione formatery dziedziczą bezpośrednio po klasie System.Object. Nie dzielą zatem wspólnego zbioru składowych
- 31. Interfejs IFormater Interfejs System.Runtime.Serialization.IFormater definiuje podstawowe metody Serialize() i Deserialize() oraz kilka właściwości wykorzystywanych „po cichu”
- 32. Interfejs IRemotingFormater Interfejs System.Runtime.Remoting.Messaging.IRemotingFormater (wykorzystywany przez warstwę zdalnego dostępu .NET) przeciąża metody Serialize() i Deserialize() do
- 33. Przykładowe wykorzystanie interfejsu IFormater Mimo, że raczej nie korzysta się bezpośrednio z wymienionych interfejsów, ich przykładowe
- 34. Wierność zapisywanych nazw (1) Najbardziej oczywistą różnicą między trzema poznanymi formaterami jest sposób, w jaki graf
- 35. Wierność zapisywanych nazw (2) Typ SoapFormater utrwala informację o pakiecie w postaci XML-owych przestrzeni nazw. Na
- 36. Wierność zapisywanych nazw (3) Typ XmlSerializer nie próbuje zachowywać całkowitej zgodności typów i dlatego nie utrwala
- 37. Wierność zapisywanych nazw (4) Jeżeli chcemy utrwalić stan obiektu w postaci, która może być wykorzystana przez
- 38. Serializacja za pomocą typu BinaryFormater (1) Dwie kluczowe metody to: Serialize() – utrwalenie grafu obiektów do
- 39. Serializacja za pomocą typu BinaryFormater (2) Metoda Serialize() odpowiedzialna jest za skomponowanie grafu obiektów i przeniesienie
- 40. Serializacja za pomocą typu BinaryFormater (3) Wynikiem użycia typu BinaryFormater jest następujący plik binarny przechowujący stan
- 41. Serializacja za pomocą typu BinaryFormater (4) Deserializacja stanu obiektu z pliku binarnego. Metoda Deserialize() zwraca obiekty
- 42. Serializacja za pomocą typu SoapFormater (1) Specyfikacja SOAP (ang. Simple Object Access Protocol) definiuje standardowy proces,
- 43. Serializacja za pomocą typu SoapFormater (2) Wynikowy plik zawiera stan obiektu oraz relacje między jego poszczególnymi
- 44. Serializacja za pomocą typu XmlSerializer (1) Typ XmlSerializer służy do zapisania publicznego stanu obiektu w postaci
- 45. Serializacja za pomocą typu XmlSerializer (2) Wynikiem serializacji naszego obiektu jest nastepujący dokument XML.
- 46. Kontrola sposobu generowania dokumentu XML XmlSerializer wymaga zdefiniowania dla każdej z klas biorącej udział w serializacji
- 47. Atrybuty przestrzeni System.Xml.Serialization
- 48. Przykładowe zastosowanie atrybutów Wynikowy dokument XML. Zmiana w definicji klasy (zastosowanie atrybutów) Nowy wynikowy dokument XML
- 49. Ponieważ kolekcje z przestrzeni nazw System.Collections i System.Collection.Generic są serializowalne (oznaczone atrybutem [Serializable]), serilaizacja kolekcji nie
- 50. Serializacja kolekcji obiektów (2) Serializacja za pomocą typu XmlSerializer wymaga podania metadanych o odpowiednich typach. W
- 51. Konfiguracja procesu serializacji
- 52. Konfiguracja procesu serializacji W niektórych przypadkach, domyślne działanie serializacji może okazać się niewystarczające. Możemy chcieć w
- 53. Typy związane z konfiguracją serializacji
- 54. Kolejne fazy procesu serializacji (1) W momencie serializacji obiektu, typ BinaryFormater, przesyła następujące informacje do danego
- 55. Kolejne fazy procesu serializacji (2) Poza przenoszeniem danych do i ze strumienia, formatery analizują składowe obiektów
- 56. Implementacja interfejsu ISerializable Obiekty oznaczone atrybutem [Serializable] mogą implementować interfejs ISerializable. Pozwala to na zaangażowanie się
- 57. Klasa SerializationInfo Metoda GetObjectData() jest wywoływana automatycznie przez formater w czasie serializacji. Implementacja tej metody wypełnia
- 58. Specjalny konstruktor (1) Klasa implementująca interfejs ISerializable musi również definiować specjalny konstruktor o następujących parametrach: Konstruktor
- 59. Specjalny konstruktor (2) Drugim parametrem tego specjalnego konstruktora jest typ StreamingContext, który zawiera informacje odnoście źródła
- 60. Przykład implementacji interfejsu ISerializable
- 61. Wynik przykładowej konfiguracji serializacji Wynikiem przykładowej konfiguracji procesu serializacji będzie następujący plik. Nazwy jego elementów nie
- 62. Konfiguracja za pomocą atrybutów (1) Drugim sposobem konfiguracji procesu serializacji (preferowanym sposobem) jest definiowanie metod oznaczanych
- 63. Konfiguracja za pomocą atrybutów (2) Atrybuty te są zdefiniowane w przestrzeni nazw System.Runtime.Serialization. Metody oznaczone tymi
- 64. Przykładowa konfiguracji przy użyciu atrybutów
- 66. Скачать презентацию