programing

Java 시리얼화 vs JSON vs XML

megabox 2023. 4. 4. 21:11
반응형

Java 시리얼화 vs JSON vs XML

네트워크상에서 오브젝트를 전송할 때 어떤 시리얼 메커니즘을 선택해야 하는지 궁금합니다.장점과 단점은 무엇입니까?

하는 것은 잘 있습니다.JSON ★★★★★★★★★★★★★★★★★」XML★★★★★★에AJAX 「」이기 에,Javascript+ " " " " 를 사용합니다.JSON설치 면적이 작기 때문에 매우 가볍습니다.Java시리얼화는 완전히 테이블에서 벗어났습니까?

일반적으로 중요한 질문은 (node-js), Java 클라이언트, 알 수 없는/복수의 클라이언트와 같은 브라우저/JavaScript 엔진 중 어느 클라이언트가 직렬화된 개체를 수신할 것인가 하는 것입니다.

JSON - JSON 구문은 기본적으로 JavaScript이므로 JS엔진을 탑재한 컴포넌트는 해석을 매우 잘 처리합니다.복잡한 데이터 구조도 효율적으로 "살아있는" 객체로 변환됩니다.JSON 파서는 거의 모든 언어에 대해 존재하며 JS 엔진을 사용하지 않을 때도 사용하기 쉬우며(예를 들어 JSON을 대응하는 오브젝트로 쉽게 변환할 수 있는 Google Gson을 예로 들 수 있습니다), 메시징 아키텍처 등 언어 간 통신에 적합합니다.

XML - JSON의 많은 이점(크로스 언어, 경량화 등)을 공유합니다.예를 들어 Adobe Flex는 XML을 매우 잘 처리하며 JSON보다 훨씬 우수합니다.확실히 JSON의 적절한 대체품입니다.JS와 같은 구문은 개인적으로 JSON을 선호하지만 XML도 좋습니다.

Java Serialization - Java-to-Java 통신에 대해서만 고려해야 합니다.중요한 점은 클래스 정의는 송신측과 수신측에 있어야 하며 대부분의 경우 객체 전체를 전달해도 큰 이득을 얻을 수 없다는 것입니다.RMI를 통신 프로토콜로 배제하지 않을 것입니다. RMI는 개발을 단순화합니다.단, 어플리케이션 컴포넌트는 하드커플링되기 때문에 교환이 매우 어렵습니다.

또 하나의 주의: 일반적으로 시리얼화에는 오버헤드가 있습니다.다만, 네트워크를 개입시켜 통신을 실시하는 경우, 병목 현상은, 시리얼화/디시리얼화 자체가 아니고, 네트워크인 경우가 많습니다.

상황에 따라 다르죠.http 요청 등을 송신하는 경우 JSON 또는 XML을 선택하는 것이 좋습니다.분산 알고리즘 같은 것을 위해 java 객체를 tcp 소켓을 통해 전송하는 경우 java serialization이 더 쉽고 더 낫다고 생각합니다.

네트워크를 통한 시리얼화는 XML과 JSON 모두 동작합니다.이 정보의 소비자에 따라 다릅니다.

  • 사용자가 Ajax를 사용하여 화면에 정보를 요청하고 무언가를 렌더링하는 브라우저라면, 일반적으로 JSON이 Javascript 객체 형식으로 되어 있기 때문에 Javascript 호환 객체로 변환하는 오버헤드가 없습니다.실제로 많은 Ajax libs(예: jQuery)는 JSON을 잘 지원합니다.

  • consumer가 java 또는 java 이외의 어플리케이션인 경우 XML이 시리얼라이제이션메커니즘으로 선호됩니다.웹 서비스는 XML을 매우 많이 사용합니다.

  • 고객이 다른 Java 프로그램인 경우 Java 시리얼라이제이션이 권장됩니다(RMI 등).아직 공개되지 않았습니다. :-)

그러나 XML과 JSON 사이에는 경계가 모호합니다.여기서 말씀드린 것은 일반적인 관행입니다.여기 XML 대 JSON에 대한 모든 측면을 다룬 좋은 기사가 있습니다.

보안 엔지니어 트레이닝에 참가한 적이 있습니다.Java 네이티브 시리얼라이제이션 측에서는 (악의가 있을 가능성이 있는) 바이트 스트림을 받아들일 수 있는 보안 취약점이 있기 때문에 Java 네이티브 시리얼라이제이션 사용을 권장하지 않습니다.또한 XML은 정의/스케마가 올바르게 정의되지 않은 경우 알려진 보안 문제가 있습니다. 이를 XXE(XML Enternal Entities)라고 합니다.소비자에게 억대 웃음 공격을 가할 수도 있다.

개발자로서 Response Objects의 serialization에 신경 쓸 필요는 없다고 생각합니다만, JSON을 생각하면 XML보다 선택할 수 있는 충분한 이점이 있습니다.

  1. JSON 응답은 XML과 달리 인코딩된 응답을 필요로 하지 않습니다.
  2. JSON의 처리와 처리는 해석되지 않기 때문에 XML에 비해 고속입니다.
  3. AJAX에 대한 XML 응답은 항상 인코딩되므로 처리에 시간이 걸립니다.
  4. JSON은 UI 관련 코딩에 가장 적합하고 더 빠릅니다.
  5. 대용량 데이터 처리: 서버에서 인덱스 데이터를 가져오면 JSON 처리 속도가 빨라집니다.

언급URL : https://stackoverflow.com/questions/11102645/java-serialization-vs-json-vs-xml

반응형