АСН.1 против JSON, когда это уместно использовать их?

когда используется ASN.1 предпочтительнее использования JSON? Какие преимущества и недостатки обоих подходов?

2 ответов


ASN.1 и JSON не являются строго сопоставимыми. JSON-это формат данных. АСН.1 - это язык схемы плюс несколько наборов правил кодирования, каждый из которых создает различные форматы данных для данной схемы. Таким образом, исходный вопрос несколько параллелен вопросу "XML-схема против XML: когда их целесообразно использовать?- Более справедливое сравнение было бы между АСН.1 и схема JSON.

тем не менее, несколько моментов для рассмотрения:

  • ASN.1 имеет двоичное кодирование правила. Подумайте, предпочтительнее ли двоичное или текстовое кодирование для вашего приложения.
  • ASN.1 также имеет правила кодирования XML. Вы можете выбрать кодировку на основе текста с помощью ASN.1, Если хотите.
  • ASN.1 позволяет разрабатывать другие правила кодирования. Фактически, мы указали наши собственные (нестандартные) правила для кодирования ASN.От 1 до JSON. Я написал об этом в блоге на сайте нашей компании здесь
  • как и в XML-схеме, существуют инструменты для компиляции ASN.1. Они обычно называются инструментами привязки данных. Выходные данные компилятора состоят из структур данных для хранения ваших данных и кода для кодирования/декодирования в/из различных кодировок (двоичных, XML или, если используется наш инструмент, JSON).
  • Я не уверен, что существуют инструменты привязки данных для схемы JSON. Я также не уверен, насколько зрелая/стабильная схема JSON, тогда как ASN.1 довольно зрелый и стабильный.
  • выбор между схемой JSON и ASN.1, Обратите внимание, что схема JSON привязана к JSON, тогда как ASN.1 не привязан ни к какому конкретному представлению.

вы можете использовать ASN.1 независимо от того, нужно ли сериализовать сообщения, которые могут перейти к получателю с помощью C, C++, C#, Java или любого другого языка программирования С ASN.1 энкодер / декодер двигателя. АСН.1 также предоставляет несколько правил кодирования, которые имеют преимущества при различных обстоятельствах. Например, DER используется, когда каноническое кодирование имеет решающее значение, например в цифровых сертификатах, в то время как PER используется, когда пропускная способность имеет решающее значение, например в сотовых протоколах, и E-XER используется, когда вы не заботьтесь о пропускной способности и хотели бы отобразить кодировку в XML для maniplulation в браузере или обмена сообщениями с механизмом схемы XML.

обратите внимание, что с хорошим ASN.1 инструмент, вам не нужно менять код приложения для переключения между этими ASN.1 правила кодирования. Простой вызов функции может выбрать правила кодирования, которые вы хотите использовать.