개인적으로 나는 Java에 내장 된 이진 직렬화가 엄청나게 고통 스럽다는 것을 발견했습니다. 그것은 ludicrously 당신이 무엇이든을 변경하지 않았더라도 버전 비 호환성으로 끝나기가 쉽습니다. 은이 문제를 일으킬 것으로 예상합니다. 경우 문제가 아니다
: 당신은 당신의 고객을 보장 할 수
- 은/서버는 모든 코드의 정확히 같은 버전을 실행됩니다.
- 이전 버전에서 작성한 데이터는 읽을 필요가 없습니다.
어쩌면 그게 당신 상황 일지 모르지만 개인적으로 나는 버전 화에있어 더 유연해질 수있는 직렬화 형식을 선호합니다. 이제는 바이너리 또는 텍스트 일 필요는 없습니다. JSON, Protocol Buffers, Thrift 또는 기타 여러 옵션을 사용할 수 있습니다. 각각은 별도의 장단점이 있지만 각각의 버전은 Java보다 버전 호환성이 더 간단하도록 설계되었습니다.
이제 Java 직렬화의 위쪽은입니다. 모든 것이 작동하는 (전체 트리가 직렬화 가능) 상황에있는 동안 다른 변경없이 직렬화 할 수 있습니다. 데이터를 모델링 할 필요가 없습니다 별도로 직렬화 프레임 워크를 사용하는 것과 같습니다. 불행히도 이 아닌 클래스를 사용하여 나무에 어딘가에 직렬화 할 수있는 클래스를 사용하면 ...
텍스트와 이진 형식 중 하나를 선택하는 데있어 찬반 양론 합리적으로 입니다. 텍스트는 더 크지 만 네트워크 추적을보고 무슨 일이 벌어지고 있는지 진단하는 것이 더 쉽습니다. 물론 양쪽 모두 동일한 인코딩을 사용해야합니다.
혹시 비 Java 클라이언트/서버와 통신하려는 경우 아, 그리고 물론, 당신은 당신이 자바의 네이티브 직렬화 :
+1 : 대부분의 바이너리 형식은 텍스트 형식보다 작지만 텍스트 직렬화는 자바 직렬화보다 작을 수 있습니다 (나중에 비효율적이기 때문에). –