Sunday, July 08, 2018

Протокол обмена данными

...Дело в том, что так же, как для понимания двух людей нужно, чтобы они оба одновременно знали хотя бы один из человеческих языков, так же и для взаимодействия программ надо, чтобы они умели «излагать» некие данные на одном и том же языке. Это, правда, обычно иначе называется — «протокол взаимодействия» или «формат файла», — но смысл тот же: они обе должны уметь «перевести» что-то со своего внутреннего языка, на тот язык, который понимает другая программа. Или, наоборот, прочитать что-то на том языке, который другая программа тоже понимает.

Одновременно с этим, перевод с языка на язык должен быть взаимно однозначным, а сам язык должен позволять выразить на нём все нужные программе данные.

Ниже есть продолжение.

Если не понятно, то сейчас я попробую по-другому объяснить.


Передача данных (обмен данными) — физический перенос данных (цифрового битового потока) в виде сигналов от точки к точке или от точки к нескольким точкам средствами электросвязи по каналу передачи данных, как правило, для последующей обработки средствами вычислительной техники. Примерами подобных каналов могут служить медные провода, ВОЛС, беспроводные каналы передачи данных или запоминающее устройство.

Те́кстовые да́нные (также те́кстовый форма́т) — представление информации строкового типа (то есть, последовательности печатных символов) в вычислительной системе.

В отличие от термина «текстовые данные» («текстовый формат данных»), характеризующего содержимое данных, термин «текстовый файл» относится к файлу и характеризует его как контейнер, хранящий такие данные.

Те́кстовый файл — компьютерный файл, содержащий текстовые данные. Текстовым файлам противопоставляются двоичные (бинарные) файлы, в которых содержатся данные, не рассчитанные на интерпретацию в качестве текстовых (например, файлы, хранящие текст в закодированном или сжатом виде, или хранящие не текст, а звук, изображение или иные данные).

Часто текстовые данные понимаются в более узком смысле — как текст на каких-либо языках (формальных или естественных), который может быть прочитан и понят человеком.

Текстовому формату противопоставляются «двоичные данные», информация в которых закодирована произвольным образом, не рассчитанном на восприятие человеком.

Для большей части компьютерного оборудования и программ неважно, являются ли данные текстовыми. Однако многие сетевые протоколы рассчитаны на работу только с текстовыми данными и не могут обрабатывать произвольную последовательность байтов. Также, некоторые программы обрабатывают текстовые и двоичные данные по-разному, а некоторые предназначены для обработки именно текстовых данных. Программы для создания и редактирования текстовых данных называются текстовыми редакторами.

Основная цель применения текстовых данных — «общий знаменатель», независимость от отдельных программ, требующих собственного кодирования или форматирования и несовместимых с другими программами. Текстовые файлы (файлы в текстовом формате) могут быть открыты, прочитаны и отредактированы в любых текстовых редакторах, таких как MS-DOS Editor (англ.) (DOS), Блокнот (Windows), ed, vi и vim (UNIX, Linux), SimpleText (англ.), TextEdit (Mac OS X) и т. п. Другие программы также как правило умеют читать и импортировать текстовые данные. Просмотреть текстовые файлы можно также встроенными командами (type в DOS и Windows) и утилитами (cat в Unix).

Текстовый формат часто используются для представления данных, которые сами не являются чисто текстовыми.
В этом случае другие форматы данных «надстраиваются» над простым текстом, для чего их управляющие конструкции выражаются посредством печатных слов и знаков препинания. Это обеспечивает удобство работы с данными на двух уровнях — например, данные HTML, XML, JSON можно просматривать и редактировать с показом форматирования в режиме WYSIWYG, а можно их открыть в обычном текстовом редакторе и иметь доступ ко всем тонкостям языка разметки. При хранении данных в «двоичном» виде (как это делается, например, в Microsoft Word ранних версий) с ними нередко нельзя работать в других программах (из-за недоступности информации о структуре формата) или даже в разных версиях одной и той же программы.

В файлах конфигурации многих программ применяется текстовый формат, даже если там представлены числа и двоичные переключатели (да/нет). Это несколько усложняет программы из-за необходимости преобразования текстовых данных во внутренний формат и обратно, но появляется возможность править конфигурацию вручную, без использования средств настройки самой программы.

JSON - текстовый формат обмена данными, основанный на JavaScript. Как и многие другие текстовые форматы, JSON легко читается людьми.

Несмотря на происхождение от JavaScript, формат считается независимым от языка и может использоваться практически с любым языком программирования.

За счёт своей лаконичности по сравнению с XML, формат JSON может быть более подходящим для сериализации сложных структур.
https://ru.wikipedia.org/wiki/%D0%A2%D0%B5%D0%BA%D1%81%D1%82%D0%BE%D0%B2%D1%8B%D0%B5_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D0%B5
https://ru.wikipedia.org/wiki/%D0%A2%D0%B5%D0%BA%D1%81%D1%82%D0%BE%D0%B2%D1%8B%D0%B9_%D1%84%D0%B0%D0%B9%D0%BB
https://ru.wikipedia.org/wiki/JSON


JSON является стандартом де-факто для обмена данными между разными сервисами. Так, REST (архитектурный стиль взаимодействия компонентов распределённого приложения в сети) фактически использует как JSON over HTTP. Ну, это я немного в дебри залез. Вернёмся к заметке.


Поясню на примере. Есть, например, картинки, которые хранятся на компьютере. Однако картинка — это просто файл, содержимое которого трактуется каждой программой. Та программа, которая «знает», каким образом следует трактовать файл в формате, например, «jpg», сможет прочитать его и показать на экране. Или даже, наоборот, записать картинку в этом формате.

Если некие две программы умеют читать и записывать файлы в формате jpg, то этим способом можно передавать картинки из одной программы в другую.

Однако данные, передаваемые в этом формате, скажем так, весьма примитивны: в них записан только лишь цвет каждой точки и размер изображения (ну, там ещё кое-какие сведения есть — про настройки фотоаппарата, на который это снято, например, но не суть), которые сжаты (с потерями) определённым способом, чтобы картинка занимала меньше места. А при обработке картинок во многих программах используется нечто большее.

Например, там может быть несколько слоёв с изображениями, каждый из которых частично прозрачен.

Получается, что есть две программы, каждая из которых умеет внутри себя создавать слои, но передать друг другу они могут только «плоское» изображение — то, где все слои уже слиты воедино. А это неудобно.

Нужен какой-то способ передавать более полную информацию. Но какой? Если одна программа гораздо более популярна, чем другая, скорее всего во второй программе просто введут полную или частичную поддержку того формата, который использует первая, чтобы сохранять всю нужную ей информацию о картинке — слои, прозрачность и т.п.

Однако в пользу кого сделать выбор и как вообще об этом договориться, если обе программы сделаны крупными фирмами и популярны?

Тут есть варианты.

Например, одна из фирм делает некий формат, который не считается её интеллектуальной собственностью и не требует платить роялти за его использование. Этот формат детально описывается и всем желающим предлагается реализовать у себя его поддержку. Если этот формат оказывается достаточно удобен и универсален, то другие фирмы это предложение принимают.

Многие не в курсе, но ряд распространённых форматов именно таков. Например, формат docx (формат Microsoft Word, начиная с 2006-го года) является открытым и свободным, поэтому любой желающий может реализовать его поддержку.

До того используемый Вордом формат doc был закрытым, и даже его описание было довольно тяжело достать.

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

Чтобы решить эту проблему, создаются организации, подобные пресловутому консорциуму, внутри которых фирмы договариваются об универсальном формате, который будет удобен всем участникам... [Дело] ... просто в том, что сделать, чтобы обеспечить выгодную вообще всем (включая клиентов) совместимость софта.

само слово «консорциум» означает вот это самое: временное объединение независимых друг от друга организаций, в рамках решения какой-то конкретной задачи.

Грубо говоря, это очень удобно, когда гайка подходит к винту, даже если их выпустили разные производители.

И когда все розетки в стране одинаковые, а вилки всех электроприборов к ним подходят, это далеко не всегда следствие заговора, организованного для порабощения населения.

[Так,] Фотошоп умеет сохранять файлы, которые браузеры умеют показывать.

https://www.nalin.ru/industriya-4-0-i-mirovoj-poryadok-chast-2-5924

No comments:

Post a Comment