Jestem zdezorientowany - kiedy powinienem używać Serializacji XML i kiedy powinienem używać Serializacji Binarnej w środowisku .NET?Kiedy należy używać Serializacji XML a Serializacja Binarna w środowisku .NET?
Odpowiedz
Specyficzny dla .NET, jeśli masz dwie aplikacje korzystające z tego samego systemu, możesz użyć serializacji binarnej. Z drugiej strony, jeśli masz aplikacje znajdujące się na różnych platformach, zalecamy użycie Serializacji XML. Więc jeśli piszę aplikację do czatu (klient i serwer), mogę użyć serializacji binarnej, ale jeśli później zdecyduję, że powinienem użyć Pythona do napisania klienta, to może nie.
Jeśli włączysz Serializer kontraktu danych po wypowiedzeniu "serializacji xml", to zgadzam się z tobą. –
Dziękuję bardzo za odpowiedź – Mahantesh
@Mahantesh @ Adel - "binarny" nie jest tu problemem; Jest ** nie ** prawda, że plik binarny nie jest interoperacyjny - po prostu: 'BinaryFormatter' (* specyficzny przykład * binarnego serializera) jest złym wyborem. Istnieje kilka innych. –
Jeśli chcesz mieć przyjazne dla użytkownika lub wieloplatformowe wyjście, użyj XML. Również serializacja XML korzysta z publicznych pól i właściwości do serializacji i można zmienić/sformatować dane wyjściowe przy użyciu atrybutów i niestandardowej serializacji na poziomie klasy, jeśli chcesz. Bin.Ser. korzysta z prywatnych pól do serializacji.
Sigh; oh stare mity ... Aby zaprzeczać * obu * punktom; podczas gdy 'BinaryFormatter 'jest serializatorem terenowym, to ** nie ** jest jedynym serializatorem binarnym - większość innych jest znacznie lepiej zachowana - i podobnie,' DataContractSerializer' zapisuje xml, a * jeśli typ nie jest poprawnie adnotowany * działa jak * Serial * serializer. –
DataContractSerializer, WCF? W tym pytaniu nie ma ani słowa na ten temat. – SeeSharp
moim referencją jest "serializacja xml", która nie jest taka sama jak "XmlSerializer". "serializacja xml" jest po prostu kategoryzacją; 'XmlSerializer' jest specyficznym przykładem API do" serializacji xml ". 'DataContractSerializer' ** także ** wykonuje" serializację xml ". –
Obie istniejące odpowiedzi koncentrują się na "wieloplatformowości", ale to niezwiązany problem. Rzecz w tym, że robią to "nie używaj BinaryFormatter
, jeśli robisz wiele platform" - co całkowicie popieram. Istnieje jednak szereg binarnych formatów serializacji, które są bardzo wiele międzyplatformowe - protobuf/ASN.1 jest pierwszorzędnymi przykładami.
Zobaczmy więc, co każdy ma do zaoferowania;
- Binary jest zwykle mniejsze, zazwyczaj szybciej procesu (na obu końcach), i nie jest łatwo człowiek/edycji
- formaty czytelnego tekstu (XML/JSON) wydają się być bardziej gadatliwy niż binarny (choć często kompresuje dobrze), ale są łatwe w obsłudze ręcznie; ale wszystko, przetwarzanie tekstu mapowanie sprawia, że im wolniej
- xml jest bardzo powszechne jest Web-usługi oraz korzyści z gooling wsparcia takich jak XSD, XSLT i solidna xml redaktorów
- json jest głównym graczem w przeglądarce opartych comms (choć jest on również używany w internetowych usługach) - wydaje się być mniej formalny, ale nadal bardzo skuteczne
Wskazówki jak interoperacyjność ma ani siły, ani słabość albo, tak długo, jak wybrać odpowiedni format binarny!
Here's an answer porównuje czas serializacji, deserializację i metryki przestrzenne większości serializatorów .NET w celach informacyjnych.
Ciekawe, jak znaleźć swoje stare odpowiedzi? Właśnie dzisiaj próbowałem wyśledzić jedną z moich ostatnich odpowiedzi na pewne powiązane pytanie i trudno mi było go znaleźć. –
@ H.B. zwykle przez google, [na przykład] (http://www.google.com/search?sourceid=chrome&ie=UTF-8&q=%2B%22ok+i'll+bite%22+%2Bgravell+site:stackoverflow.com) –
- 1. Serializacja binarna vs. JSON kontra xml
- 2. Dlaczego serializacja binarna jest szybsza niż serializacja xml?
- 3. Jak zidentyfikować pole powodujące, że serializacja binarna zawiedzie w .NET?
- 4. Jakie dane są przekazywane w serializacji? (Serializacja binarna)
- 5. serializacji XML .NET i dziedziczenie
- 6. Serializacja XML w C#
- 7. Kiedy należy używać _aligned_malloc()?
- 8. Kiedy należy używać AQL?
- 9. Kiedy należy używać JCR i kiedy należy używać JPA/RDBMS?
- 10. Kiedy należy używać plików XSD?
- 11. Serializacja XML - inny wynik w .NET 4.0
- 12. Kiedy należy używać WS_EX_NOREDIRECTIONBITMAP?
- 13. Kiedy należy używać ConcurrentSkipListMap?
- 14. .NET Serializacja XML na podstawie XSD?
- 15. Kiedy należy używać git skrytki?
- 16. Kiedy należy używać html5 sessionStorage?
- 17. Kiedy należy używać setUpClass i kiedy __init__?
- 18. Android: Kiedy należy używać FragmentTransaction.remove?
- 19. Kiedy należy używać uprawnienia ACCESS_COARSE_LOCATION?
- 20. Kiedy należy używać ramek HTML?
- 21. .NET - Czy możesz przez interfejs, a kiedy nie należy interfejs
- 22. Kiedy należy używać atrybutu KnownType?
- 23. Kiedy należy używać jednolitej inicjalizacji?
- 24. Kiedy należy używać sortowania Radix?
- 25. Kiedy należy używać niejawnego przesyłania?
- 26. KIEDY używać serializacji vs zwykły POST
- 27. Kiedy używać preRenderView a viewAction?
- 28. Kiedy używać algorytmów genetycznych a kiedy używać sieci neuronowych?
- 29. W Objective-C, kiedy należy używać metod klas i kiedy należy używać metod instancji?
- 30. Kiedy należy używać nawiasów w nokautach
Użyj serializacji binarnej, gdy chcesz mieć plik binarny? Gdzie jest zamieszanie? –
Po prostu chcesz? czy jakakolwiek okoliczność? –