2010-12-03 3 views
25

text/plain을 통해 json에 직렬화 된 객체를 보내는 content type application/json을 사용하면 성능상의 이점이 있습니까? 많은 프레임 워크 (Spring과 같은)는 컨텐츠 유형에 따라 데이터를 맵핑하고 일련화할 수 있지만 일반적으로이 프로세스는 JSON 오브젝트에 text/plain보다 application/json을 사용하는 강력한 이유는 아닙니다 .text/plain보다 application/json을 사용할 때의 이점은 무엇입니까?

+0

어떤 mime 유형이 지정 되었습니까, 아니면 json을 사용하는 것입니까? – CodesInChaos

+0

모두 나는 평범한 텍스트 콘텐트 타입이나 어플리케이션 json 콘텐트 타입을 가진 객체의 json 표현을 보낼 수있다. – stevebot

+1

json 자체는 여전히 일반 텍스트이지만 컨텐츠 유형으로 "text/plain"대신 "application/json"을 명시 적으로 선택하는 이유는 아무도 없습니다.나는 "application/html"또는 "application/css"를 선택하지 않았습니다. – Gherman

답변

22

구조화 된 데이터 전달에 JSON과 사용자 정의 형식 (MIME 형식 text/plain 사용)을 사용한다고 가정 해 보겠습니다.

성능이 다른 구성 요소로 나뉠 수 있습니다. 예 : 인코딩 된 콘텐츠의

  • 형식으로 컨텐츠를 인코딩하는 데 걸리는 상대 시간, 당신에게 원본 콘텐츠를 제공하기 위해 포맷을 디코딩하는 데 걸리는
  • 상대적으로 시간 및
  • 상대적인 크기.

이론 상으로는 최적으로 설계되고 구현 된 사용자 정의 형식이 JSON보다 느리거나 덜 복잡하지는 않습니다. ("증명"은 분명합니다. JSON의 최적 구현을 ​​선택하고 성능에 영향을 미치지 않는 형식을 약간 변경하십시오.) 실제적으로 실제 형식과 실제 구현의 성능을 비교해야합니다. 결과적으로 성능은 실제로 포맷과 관련 인코딩/디코딩 소프트웨어를 설계하고 구현하는 일이 얼마나 좋은지에 달려 있습니다. 또한 JSON 구현 방법에 따라 다릅니다. 성능 특성이 다른 여러 서버 측 JSON 라이브러리는 물론 "네이티브"데이터 구조와 데이터를 매핑하는 다양한 방법이 있습니다.

이것은 사용자 정의 형식에 비해 JSON (및 XML)의 진정한 이점을 제공합니다.

  • JSON과 XML을 사용하면 콘텐츠 인코딩 및 디코딩을 돕기 위해 선택한 모든 주류 언어에 사용할 수있는 라이브러리가 있습니다. 사용자 정의 형식을 사용하면 클라이언트 측과 서버 측에서 고유 한 인코딩/디코딩을 수행해야합니다.

  • JSON과 XML을 사용하면 다른 사람들이 인코더/디코더를 구현할 수 있도록 올바른 형식이 무엇인지 말하는 표준이 있습니다. 사용자 정의 형식을 사용하면 다른 사람들이 사용자 형식을 구현할 수있게하려면 사용자가 직접 사양을 작성해야합니다.

  • JSON과 XML에는 charset 인코딩 및 데이터에 나타나는 "메타"문자와 같은 문제를 처리하는 표준 방법이 있습니다. 관습과 함께 이러한 문제를 이해하고 해결해야합니다. (그렇지 않으면 궤도를 따라 어려움을 겪을 수 있습니다.)

  • 용이함. JSON/XML 기반 형식을 발전시키는 것은 상대적으로 간단한 문제입니다. 그러나 사용자 정의 형식을 사용하면 할 일이 많아지고 디자인 선택에 따라 매우 어려울 수 있습니다.

    대부분의 응용 프로그램에 대한

, 이 문제없이 훨씬 더 성능보다. 이것이 바로 JSON 또는 XML이 널리 사용되는 이유입니다.

후속

하지만 당신은 내가 정의 구현을 사용하고 MIME 형식 응용 프로그램/JSON의 그것과 일반 텍스트의 MIME 타입 /과 JSON을 보내는 비교 아니에요 가정 대신하는 경우?

는 그런 대답은 거의 성능 차이가 없다는 것입니다.

  • 당신은 HTTP 요청 또는 응답 헤더 MIME 타입 문자열이 짧은 때문에 6 바이트를 저장하지만, 이것은 그 크기가 수천 바이트 단위로 측정되는 일반적인 HTTP 메시지 미미하다.
  • "text/plain"콘텐츠 유형을 사용하면 요청 또는 응답 메시지를 인코딩/디코딩하기 위해 수행해야하는 작업과 아무런 차이가 없습니다. 6 개의 추가 바이트를 비교/복사하는 데 시간을 빼고는 다음과 같습니다. 아마도 측정 하기엔 너무 작을 것입니다.

또한 부정확 한 MIME 유형을 사용하면 (아마도) HTTP 사양을 위반하게됩니다. 이렇게하면 :

  • 수신자가 응답을 잘못 처리 할 가능성이 있습니다. 예 : 해독하지 않거나 브라우저 창에 표시하면

  • 클라이언트 또는 서버에서 HTTP 내용 유형 협상을 중단 할 수 있습니다.

은 즉, 나는이 작업을 수행 할 수없는 좋은 이유를 생각할 수있는, 몇 좋은 이유는 그것을 할 수 없습니다.

+0

하지만 대신 사용자 정의 구현을 사용하지 않고 JSON을 MIME 유형의 text/plain과 MIME 유형 application/json의 JSON을 비교한다고 가정합니다. – stevebot

+0

Google은 autocomplete 제안을 txt 형식의 JSON으로 제공합니다. 그들이 무엇을 얻고 있는지 궁금합니다. – lfender6445

+0

아마도 특정 브라우저가 JSON을 유해한 상황에서 "렌더링"하지 못하게 할 수 있습니다. 아마도 수십억 개의 요청을 곱하면 6 바이트 절약이 중요 할 수 있습니다. 아마도 그들은 거의 아무것도 얻지 못하고 있습니다 ... –

10

JSon은 기본적으로 일반 텍스트 형식입니다. 따라서 최상의 일반 텍스트 형식보다 빠를 수 없습니다. JSON은 인코딩과 디코딩을보다 쉽게 ​​만들고 여러 유형의 데이터, 특히 복잡한 데이터에 대해 사람이 읽을 수 있기 때문에 사용됩니다.

지금 사용중인 대체품을 찾고 계시다면 보내시는 데이터에 대해 더 자세히 알려 주시면 대안을 제안 할 수 있습니다.

+0

나는 대안을 찾고 있지 않다. 당신이 말했듯이, json은 평범한 텍스트 형식이므로 일반 텍스트로 보낼 수있다. 두 가지 방법 중 어느 것이 더 효과적인지 확신하지 못했습니다. – stevebot

3

JSON 엔진의 주요 최적화 (C 코드)로 인해 JSON이 더 빨라질 수 있습니다. 예를 들어 V8의 JSON.parse()는 매우 빠릅니다.

4

JSON은 결국 xml과 함께 널리 사용되는 형식이됩니다. JSON의 승인은 매우 빠르게 성장하고있어 텍스트를보다 현명한 선택으로하여 미래를 염두에두고 있습니다.

1

다른 장점 JSON 형식의 JSon 형식은 유사한 javascript Object 선언이므로 더 간단하고 빠른 구문 분석이 가능합니다.

JSON 문자열 : {이름 : 값 NAME2 : 값}

아주 쉽게

자바 스크립트 객체에 tranform합니다.

3

여기는 json입니다.조직 설명 (LOL)와 더 동의하지 않을 수 :

JSON : XML

여기

당신이 JSON 라이브러리는 거의 모든 언어가 찾을 수있는 무 지방 대체합니다.

http://www.json.org/

JSON은 그래서 JQuery와 최고의 텍스트의 http://api.jquery.com/jQuery.getJSON/

하나 쉽게 JSON은 직렬화 및 의 목적을 위해 설계 되었기 때문에 내가 JSON http://ascherconsulting.com/what/are/the/advantages/of/using/json/

에 대해 발견 한 것입니다 데이터를 unserializing하고 을 JavaScript 응용 프로그램에서 보내면 JSON을 사용하면 장점이 생깁니다. 의 다른 장점보다 JSON의 장점은 입니다. 가장 잘 알려진 에 대한 데이터를 직렬화하는 수단은 현재 응용 프로그램과의 사이에서의 전송은 이며 XML입니다. 그러나 XML은 이라는 다소 번거로운 수단이 있습니다. 먼저, 받는 사람이 이해하는 문서 형식 정의에 따라 을 기반으로 serialize 할 데이터를 으로 인코딩해야합니다. 이렇게하면 은 DTD가 사용되는 경우에도 실제 데이터 주변에 많은 여분의 패딩을 생성합니다. 따라서 XML 문서의 크기는 실제 값 집합과 비교하면 크기 인 경우가 많습니다. 둘째, 수신자는 XML 스트림을 수신하고 데이터를 으로 디코딩 한 다음 해당 데이터를 메모리에 저장해야합니다. JSON의 구조 유형 표준 프로그래밍 데이터 구조를 반영하고, 부호화 장치가 필요한 문자 의 만 최소 수를 추가하기 때문에 비교하여, 발신자가 JSON을 사용하여 데이터 직렬화 비교적 빠르고 컴팩트 구조를 나타내며 데이터의 값은 입니다. 받는 사람 가 다음 JSON 직렬화 된 데이터, 를 수신하면, 할 수 에 필요한 유일한 처리를 사용하여 문자열의 텍스트를 평가하는 것 중 하나는 자바 스크립트의 내장 eval 함수 또는 다른 언어로 호환 기능. 다른 표준 비교는 YAML, 이며 DTD 에 의존하지 않고 복잡한 데이터 세트를 직렬화 할 수 있으며 XML보다 읽고 쓰는 데 더 간단한 파서가 필요합니다. 그러나 도 단순화 된 YAML 파서 인 은 일반적으로 더 많은 시간이 필요하며 은 JSON보다 더 큰 일련화된 데이터를 생성합니다. .

관련 문제