혼란 스럽군요. 언제 XML 직렬화를 사용해야하며 언제 .NET 프레임 워크에서 이진 직렬화를 사용해야합니까?.NET 프레임 워크에서 XML 직렬화와 이진 직렬화를 사용해야하는시기는 언제입니까?
답변
.NET에만 해당 동일한 유형의 시스템을 사용하는 두 개의 응용 프로그램이있는 경우 이진 직렬화를 사용할 수 있습니다. 다른 플랫폼에있는 응용 프로그램을 사용하는 경우 XML 직렬화를 사용하는 것이 좋습니다. 따라서 채팅 애플리케이션 (클라이언트와 서버)을 작성하는 중이라면 바이너리 직렬화를 사용할 수도 있지만, 나중에 클라이언트를 작성하기 위해 파이썬을 사용해야한다고 결정하면 그렇지 않을 수도 있습니다.
"xml serialization"이라고 할 때 Data Contract Serializer를 포함하면 동의합니다. –
답변을 주셔서 대단히 감사합니다. – Mahantesh
@Mahantesh @Adeel - "바이너리"는 문제가 아닙니다. 바이너리가 상호 운용 될 수 없다는 것은 사실이 아닙니다 ** 단순히'BinaryFormatter' (바이너리 시리얼 라이저의 특정 예 *)는 좋지 않습니다. 여러 가지가 있습니다. –
사용자 친화적이거나 플랫폼 간 출력을 원하면 XML을 사용하십시오. 또한 XML 직렬화는 공용 필드와 속성을 사용하여 serialize하고 속성을 사용하여 출력을 변경하거나 다시 포맷 할 수 있습니다. Bin.Ser. 비공개 필드를 사용하여 직렬화합니다.
한숨; 오, 옛 신화 ... * 두 점 모두를 모순; 'BinaryFormatter'는 실제로 필드 시리얼 라이저이지만, ** 유일하지 않은 바이너리 시리얼 라이저입니다 - 대부분의 것들은 훨씬 더 잘 동작합니다 - 마찬가지로'DataContractSerializer'는 타입에 정확하게 주석이 달려 있지 않다면 *를 쓰고 * * 필드 * 시리얼 라이저. –
DataContractSerializer, WCF? 이 질문에 대해서는 아무 말도하지 않습니다. – SeeSharp
내 참조 거기에 "xml serialization", 같은 아니'XmlSerializer'. "xml serialization"은 단순히 범주입니다. 'XmlSerializer'는 "xml serialization"을위한 API의 구체적인 예입니다. 'DataContractSerializer' ** 또한 "xml serialization"을 수행합니다. –
기존 답변은 "크로스 플랫폼"에 중점을 두지 만 관련이없는 문제입니다. 그들이 만들고있는 요점은 "당신이 크로스 플랫폼을 수행한다면 BinaryFormatter
을 사용하지 말라."- 전적으로 지원합니다. 그러나 매우 다양한 이진 직렬화 형식이 있습니다. 크로스 플랫폼 - protobuf/ASN.1이 가장 좋은 예입니다.
그래서 각각의 기능을 대신 살펴 보겠습니다.
- 이진 (양쪽 끝) 일반적으로 빨리 처리하기 위해 일반적으로 작고, 종종 잘 압축 아니지만 쉽게 사람이 읽을 수/편집 가능한
- 텍스트 형식 (XML/JSON)는 (바이너리보다 자세한 경향), 손으로 작업하기는 꽤 쉽습니다. 하지만 모든 텍스트 처리는 매핑은 그들에게 느린
- XML은 매우 일반적인
- JSON 같은 XSD, XSLT 및 강력한 XML 편집기로 지원을 gooling에서 웹 서비스 및 혜택을 것입니다 브라우저의 주요 선수 만드는 경향이 (그것은 또한 웹 서비스를 사용하고 있지만) 기반 COMMS -만큼 당신이 선택으로, 상호 운용성 강도도 하나의 약점도가 얼마나
주의 매우 효과적 아직 덜 공식적인하지만 경향이있다 적절한 이진 형식!
Here's an answer 대부분의 .NET 직렬 변환기의 직렬화 시간, 비 직렬화 및 공간 메트릭을 비교합니다.
이상한 호기심, 어떻게 옛날 대답을 찾으십니까? 바로 오늘 나는 몇 가지 관련된 질문에 대한 나의 최근 답변 중 하나를 추적하려고 노력했는데 어려움을 겪었습니다. –
@ H.B. 일반적으로 Google을 통해 [예 :] (http://www.google.com/search?sourceid=chrome&ie=UTF-8&q=%2B%22ok+i'll+bite%22+%2Bgravell+site:stackoverflow.com) –
- 1. XML 직렬화와 LINQ to XML
- 2. WCF에서 TCP 바인딩을 사용해야하는시기는 언제입니까?
- 3. 셰이더 프로그래밍에서 유니폼을 사용해야하는시기는 언제입니까?
- 4. 인라인 대신 __forceinline을 사용해야하는시기는 언제입니까?
- 5. ColdFusion 응용 프로그램에서 Java를 사용해야하는시기는 언제입니까?
- 6. .NET 이진 XML
- 7. MVVM에서 사용하는 경우 속성과 변환기를 사용해야하는시기는 언제입니까?
- 8. asp.net mvc 2에서 비동기 컨트롤러를 사용해야하는시기는 언제입니까?
- 9. 일반 PropertyMetadata보다 FrameworkPropertyMetadata 또는 UIPropertyMetadata를 사용해야하는시기는 언제입니까?
- 10. MySQL 테이블에서 "NOT NULL"을 사용해야하는시기는 언제입니까?
- 11. DataContract 대신 메시지 계약을 사용해야하는시기는 언제입니까?
- 12. Java에서 인터페이스에서 추상 메소드를 사용해야하는시기는 언제입니까?
- 13. 웹 응용 프로그램에서 프로파일을 사용해야하는시기는 언제입니까?
- 14. 하스켈의 데이터 선언에 레코드 구문을 사용해야하는시기는 언제입니까?
- 15. Silverlight 단위 테스트 프레임 워크에서 TestProperty-Attribute를 사용하는시기는 언제입니까?
- 16. .net 프레임 워크에서 vst sdk를 사용하는 방법
- 17. .NET 프레임 워크에서 EAX 암호화 모드가 지원됩니까?
- 18. 은 .net 1.1 프레임 워크에서 실행됩니다.
- 19. .NET 프레임 워크에서 비트 플래그의 실제 사용
- 20. .NET에서의 속도 및 XML 구문 분석 - 직렬화와 XML DOM 비교
- 21. 미리 공유 사전이있는 .NET 이진 XML
- 22. SQL Server에서 Begin/End Blocks 및 Go 키워드를 사용해야하는시기는 언제입니까?
- 23. JavaScript에서 delete vs setting 요소를 null로 사용해야하는시기는 언제입니까?
- 24. "if"를 사용하여 오류를 검사해야하는시기와 예외를 사용해야하는시기는 언제입니까?
- 25. C#에서는 struct를 언제 사용해야합니까? 클래스를 사용해야하는시기는 언제입니까?
- 26. android 위젯 또는 응용 프로그램에서 singleTop launchMode를 사용해야하는시기는 언제입니까?
- 27. Objective-C 메소드 이름에서 "and"를 사용해야하는시기는 언제입니까?
- 28. 언제 UdpClient.BeginReceive를 사용해야합니까? 백그라운드 스레드에서 UdpClient.Receive를 사용해야하는시기는 언제입니까?
- 29. 부스트 직렬화와 XML에서 클래스를로드
- 30. 큰 파일에 XML 직렬화를 사용해야합니까?
바이너리를 원할 때 이진 직렬화를 사용 하시겠습니까? 혼란이 어디 있니? –
그냥 원하니? 또는 어떤 상황이어야합니까? –