2009-08-20 9 views

Odpowiedz

26

Normalnie obiekty są dostępie swobodnym, to znaczy, że może określić dowolną część obiektu (właściwość lub pole) i uzyskać bezpośredni dostęp do tej części. To wszystko dobrze i dobrze, jeśli używasz pamięci RAM do przechowywania obiektu, ponieważ pamięć RAM jest odpowiednio dopasowana do zadania.

Kiedy trzeba zapisać obiektu na nośniku, który nie jest tradycyjnie o dostępie swobodnym, na przykład dysku, albo trzeba przenieść obiekt na strumienia podłożu (takich jak sieci), a następnie potrzeby obiektów zostać przekształcone w formę odpowiednią dla danego medium. Ten proces konwersji nosi nazwę serializacji, ponieważ obiekt strukturalny jest spłaszczony lub serializowany, co czyni go bardziej podatnym na przechowywanie przez dłuższy czas lub przesyłanie przez sieć.

Dlaczego po prostu nie skopiować bitów zawierających obiekt w pamięci RAM na dysk lub wysłać go jako nieprzezroczystą kropelkę w sieci? ... możesz zapytać. Kilka kwestii:

  1. Często Format że obiekt jest przechowywany w pamięci jest zastrzeżony i dlatego nie nadaje się do spożycia publicznego - sposób, w jaki jest on przechowywany w pamięci jest zoptymalizowany do użytku w pamięci.
  2. Gdy obiekt odwołuje się do innych obiektów, odwołania te mają znaczenie wyłącznie w kontekście uruchomionej aplikacji. Nie byłoby możliwe znaczne przekształcenie obiektu w inny sposób, chyba że podczas procesu serializacji wykres obiektu został odpowiednio przeszukany i zsekularyzowany. Może zaistnieć potrzeba przetłumaczenia tych odniesień na formę, która ma znaczenie poza kontekstem wystąpienia aplikacji.
  3. Może istnieć wymóg współdziałania między systemami heterogenicznymi, w którym to przypadku wymagany jest standardowy sposób reprezentacji obiektu (zazwyczaj do tego celu wybrana jest pewna forma XML).
+0

Jako początkujący nie sądzę, by można było dać lepszą odpowiedź. –

6

Obiekt, który można przekonwertować na bity i zapisać na nośniku, takim jak dysk twardy. http://en.wikipedia.org/wiki/Serialization

+0

czy możesz podać przykład obiektu, który NIE mógłby być serializowany? – Frank

+1

Z technicznego punktu widzenia każdy obiekt, który nie został przekształcony do postaci szeregowej poprzez konstrukcję lub metodologię języka, nie podlega przekształceniu do postaci szeregowej. Jeśli chcesz mieć przykład obiektu, który zazwyczaj nie byłby serializowany, to ogólna idea to "wszystko, czego nie potrzebujesz/chcesz zapisać". W wzorcu projektowym MVC zazwyczaj nie serializuje się widoku, ponieważ kontroler powinien instruować widok, co robić (aby serializować model i kontroler). – Cinder6

+2

Jako przykład tego, co _nie_ można szeregować, rozważmy coś, co będzie bardzo trudne, jeśli nie niemożliwe, zrekonstruować na komputerze, który nie ma tego samego środowiska. Na przykład ResultSet nie można szeregować, ponieważ mogą one wstrzymywać połączenia z bazą danych. –

1

Możesz oznaczyć obiekt jako [możliwy do serializacji] w języku C#, co oznacza, że ​​można go przekonwertować na binarny, SOAP, XML, w .net.

Piękno polega na tym, że można serializować obiekt, przesłać go przez Internet, sieć itp., A następnie przywrócić go z drugiej strony jako obiekt ponownie. To może następnie przekroczyć granice maszyny, takie jak maszyna Windows do maszyny Unix, o ile komputer po drugiej stronie jest w stanie odczytać dane i rozdzielić je.

Zobacz ten artykuł: http://www.devhood.com/Tutorials/tutorial_details.aspx?tutorial_id=236

1

szeregowania w ogólnych środków w celu zapisania obiektów podać w formacie „saveable” (jak zapisywania na dysku), tak, że może być rozszeregować później w produkt rzeczywisty obiekt. Zwykle robi się to również, aby wysłać obiekt przez sieć w przypadku połączeń zdalnych. Jeśli nie chcesz zapisać, a także, jeśli nie chcesz, aby wysłać obiekt nad drutu można zignorować zaszeregować udział (w Javie dont wdrożyć Serializable interfejs)

3

Serializacja obiektów polega na zapisaniu stanu instancji, dzięki czemu można ponownie odtworzyć tę instancję później.

W większości (C# i Java) obiekt serializowany jest "oznaczony". W Javie musisz wdrożyć Serializable. W języku C# należy użyć [Serializable].

Po serializacji obiektu można go zapisać w pliku lub wysłać przez sieć.

Pomyśl o tym, jak przechodzenie przez każdą instancję zmiennej instancji i przechowywanie jej wartości, oddzielone przez jakiś separator (chociaż jest o wiele bardziej wyrafinowany, pomyśl o tym, co się stanie, jeśli masz zmienne instancji typów niepochodzących , będziesz musiał również przechowywać wszystkie wartości wewnątrz nich).

Jednym z zastosowań byłoby uratowanie gry.

1

Serializacja: technika konwersji obiektu na format binarny, prosty protokół dostępu do obiektu (SOAP) lub dokumenty xml, które można łatwo zapisać, przenieść i pobrać.

W prosty sposób serializacji sposób możemy skompresować i rozpakować dane i przesyłać dane w sieci w bezpieczny sposób.

Serializacja obiektów jest tym, co wyjaśniła ljuwaidah. Spróbuj ten link również link text

1

oprócz tego, co zostało powiedziane, myślę, że ważne jest, aby wspomnieć, że serializacji danych zakłada nadanie mu dobrze zdefiniowaną zamówienie (seryjny pochodzi z serii, co oznacza, że ​​coś wyłożona w górę lub w linii).

Na przykład serializacja wykresu (np. Wykres RDF znany z "sieci semantycznej") do formatu serializacji, takiego jak XML, oznacza, że ​​musi istnieć zestaw reguł definiujący sposób umieszczenia informacji zawartych na wykresie w w celu późniejszego odtworzenia przez zastosowanie odwrotnej reguły serializacji (deserializacji).

0

Ponieważ Java jest platformą niezależną i została wymyślona dla celów bezpieczeństwa, wszystkie rzeczy są możliwe w postaci bitów. Na przykład, jako użytkownik dobrze rozumiemy alfabety, ale trudno byłoby zapamiętać bity tego alfabetu lub możemy powiedzieć w tym łańcuchu języka Java. Dlatego, aby zapewnić bezpieczeństwo w sieci, używamy obiektów. Ponieważ wiadomości są niepoprawnie sprzężone, aby zapewnić bezpieczeństwo, używamy obiektów do wysyłania lub odbierania wiadomości z serwera lub od klienta. Dlatego też, gdy używamy obiektów, obiekty muszą być przekształcalne do postaci szeregowej, co oznacza, że ​​muszą być w formie bitów, które mogą być łatwo zrozumiane przez maszynę. W szczególności do wysyłania i odbierania wiadomości jest używany jako JMS (Java Message Service). Na przykład jeden komputer w Indiach może chcieć komunikować się z innym komputerem, który jest w USA w tym czasie, jest używana usługa JMS.

W skrócie serializacja oznacza konwersję ciągów na bity.

Korzystając z tego możemy stworzyć programy w języku Java, takie jak wysyłanie wiadomości e-mail i odbieranie, takie jak aplikacja pocztowa oparta na protokole SMTP (Simple Mail Transfer Protocol).

+0

Dlaczego twoja odpowiedź na temat Java, gdy pytanie dotyczy C#? –