text/plain을 통해 json에 직렬화 된 객체를 보내는 content type application/json을 사용하면 성능상의 이점이 있습니까? 많은 프레임 워크 (Spring과 같은)는 컨텐츠 유형에 따라 데이터를 맵핑하고 일련화할 수 있지만 일반적으로이 프로세스는 JSON 오브젝트에 text/plain보다 application/json을 사용하는 강력한 이유는 아닙니다 .text/plain보다 application/json을 사용할 때의 이점은 무엇입니까?
답변
구조화 된 데이터 전달에 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 내용 유형 협상을 중단 할 수 있습니다.
은 즉, 나는이 작업을 수행 할 수없는 좋은 이유를 생각할 수있는, 몇 좋은 이유는 그것을 할 수 없습니다.
하지만 대신 사용자 정의 구현을 사용하지 않고 JSON을 MIME 유형의 text/plain과 MIME 유형 application/json의 JSON을 비교한다고 가정합니다. – stevebot
Google은 autocomplete 제안을 txt 형식의 JSON으로 제공합니다. 그들이 무엇을 얻고 있는지 궁금합니다. – lfender6445
아마도 특정 브라우저가 JSON을 유해한 상황에서 "렌더링"하지 못하게 할 수 있습니다. 아마도 수십억 개의 요청을 곱하면 6 바이트 절약이 중요 할 수 있습니다. 아마도 그들은 거의 아무것도 얻지 못하고 있습니다 ... –
JSon은 기본적으로 일반 텍스트 형식입니다. 따라서 최상의 일반 텍스트 형식보다 빠를 수 없습니다. JSON은 인코딩과 디코딩을보다 쉽게 만들고 여러 유형의 데이터, 특히 복잡한 데이터에 대해 사람이 읽을 수 있기 때문에 사용됩니다.
지금 사용중인 대체품을 찾고 계시다면 보내시는 데이터에 대해 더 자세히 알려 주시면 대안을 제안 할 수 있습니다.
나는 대안을 찾고 있지 않다. 당신이 말했듯이, json은 평범한 텍스트 형식이므로 일반 텍스트로 보낼 수있다. 두 가지 방법 중 어느 것이 더 효과적인지 확신하지 못했습니다. – stevebot
JSON 엔진의 주요 최적화 (C 코드)로 인해 JSON이 더 빨라질 수 있습니다. 예를 들어 V8의 JSON.parse()는 매우 빠릅니다.
JSON은 결국 xml과 함께 널리 사용되는 형식이됩니다. JSON의 승인은 매우 빠르게 성장하고있어 텍스트를보다 현명한 선택으로하여 미래를 염두에두고 있습니다.
다른 장점 JSON 형식의 JSon 형식은 유사한 javascript Object 선언이므로 더 간단하고 빠른 구문 분석이 가능합니다.
JSON 문자열 : {이름 : 값 NAME2 : 값}
아주 쉽게
자바 스크립트 객체에 tranform합니다.여기는 json입니다.조직 설명 (LOL)와 더 동의하지 않을 수 :
JSON : XML
여기
당신이 JSON 라이브러리는 거의 모든 언어가 찾을 수있는 무 지방 대체합니다.
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보다 더 큰 일련화된 데이터를 생성합니다. .
- 1. postgresql에서 plpgsql을 사용할 때의 이점은 무엇입니까
- 2. SharePoint에서 InfoPath 양식을 사용할 때의 이점은 무엇입니까?
- 3. OGNL에서 Spring EL을 사용할 때의 이점은 무엇입니까?
- 4. Hbase와 Hive를 통합 할 때의 이점은 무엇입니까
- 5. ASP.NET : 사이트 맵 기반 탐색을 사용할 때의 이점은 무엇입니까?
- 6. C++ 유형 캐스트 : 명시 적 캐스트를 사용할 때의 이점은 무엇입니까?
- 7. 오픈 소스 프로젝트에 기여할 때의 이점은 무엇입니까?
- 8. php와 html을 분리 할 때의 이점은 무엇입니까?
- 9. MongoDB에서 directoryperdb를 사용할 때의 이점
- 10. 스크립팅 언어로 DLR로 전환 할 때의 주요 이점은 무엇입니까?
- 11. 파이썬 라이브러리/애플리케이션을 .egg 파일로 패키징 할 때의 이점은 무엇입니까?
- 12. 함수를 "인라인"으로 선언 할 때의 이점은 무엇입니까?
- 13. AS3의 EventListeners에서 약한 참조를 사용했을 때의 이점은 무엇입니까?
- 14. Memcached에서 레코드를 업데이트하는 것보다 레코드를 삭제할 때의 이점은 무엇입니까?
- 15. 문자열을 자바 스크립트 배열의 initiliase로 분할 할 때의 이점은 무엇입니까?
- 16. GridView를 Page_PreRender와 Page_Load에서 바인딩 할 때의 이점은 무엇입니까?
- 17. TerminateProcess를 사용할 때의 위험은 무엇입니까?
- 18. OpenID를 사용할 때의 장단점은 무엇입니까?
- 19. performSelectorInBackground를 사용할 때의 위험성은 무엇입니까?
- 20. 저장 프로 시저의 If 문에 대해 Case 문을 사용할 때의 이점은 무엇입니까?
- 21. Registry.LocalMachine.OpenSubKey를 사용할 때의 SecurityException
- 22. CustomListView를 사용할 때의 의문점
- 23. Hypervisor VM의 이점은 무엇입니까?
- 24. 매크로 : 이점은 무엇입니까?
- 25. WCF에서 WSDualHttpBinding의 이점은 무엇입니까?
- 26. Linux에서 Java를 실행하면 얻을 수있는 이점은 무엇입니까?
- 27. JCA의 이점은 무엇입니까?
- 28. "계단"분기의 이점은 무엇입니까?
- 29. currying의 실질적인 이점은 무엇입니까?
- 30. CommonJS에서 '약속'추상화의 이점은 무엇입니까?
어떤 mime 유형이 지정 되었습니까, 아니면 json을 사용하는 것입니까? – CodesInChaos
모두 나는 평범한 텍스트 콘텐트 타입이나 어플리케이션 json 콘텐트 타입을 가진 객체의 json 표현을 보낼 수있다. – stevebot
json 자체는 여전히 일반 텍스트이지만 컨텐츠 유형으로 "text/plain"대신 "application/json"을 명시 적으로 선택하는 이유는 아무도 없습니다.나는 "application/html"또는 "application/css"를 선택하지 않았습니다. – Gherman