Задать вопрос
@Amadora

Что читать про интеграцию REST, SOAP, JSON, RMI и т.д для аналитика, который в этом ничего не понимает?

Коллеги, всем привет. Прошу не закидывать сильно камнями. Надеюсь, что вы поймете и простите. Являюсь системным аналитиком и управляю командой ~12 человек по направлению. К сожалению ИТ-вуз меня миновал и многие вещи, казалось бы очевидные, я не знаю. Наиболее критичными на мой взгляд являются вопросы интеграции. Хотелось бы разобраться в них, но не хотелось попусту тратить время на "не нужное". Может вы сориентируйте более целенаправленно меня.

Мой уровень знаний (своими словами не открывая google):
- Сообщения через SOAPпротокол имеют XML-структуру, но передаются не файлами, а через http. Ответы и запросы можно отследить либо специализированным ПО (SOAP UI например), либо как то отследить в браузере Chrome (не проверял как); Для него нужен в end point WSDL-файл, который валидирует входящее сообщение. Но почему он не нужен в других протоколах?
- Сообщения JSON. Тоже самое, что и SOAP, но имеет другое оформление, отличающееся от классического XML. И вот тут как бы есть ощущение, что я что то упускаю :-) Обмен по HTTP. Можно ли как то отследить сообщения?
- RMI- удаленный вызов java-метода. Можно нажатием кнопки в одном ПО запустить метод выполнения в другом. Но в чем разница между другими процессами? Неужели нельзя сделать тоже самое при использовании SOAP и JSON? Можно как то отследить выполнение команд из-вне?
- REST - видимо это стиль, который можно применять при всех вышеперечисленных протоколах (кроме RMI) верно?
- Socket - что это? О чем это? Чем отличается от всего вышеперечисленного?
- Есть еще обычные и понятные для меня XML-файлы, которые могут иметь абсолютно любую структуру.

Итого:
1. Есть ли что то, что может помочь довольно быстро погрузиться во все это?
2. Есть ли еще какие то стандартные протоколы, которые в целом все должны знать для галочки?
3. Верно понимаю, что с помощью этих протоколов можно передать хоть HD-фильм преобразуя файл в какой то формат а-ля base64?
  • Вопрос задан
  • 8981 просмотр
Подписаться 2 Простой 1 комментарий
Решения вопроса 1
Вам не хватает фундаментальных знаний, в данном случае вам сильно помогло бы представление о модели ISO/OSI + основные представления о классах и объектах.

Если вы прочитаете про модель ISO/OSI вам достаточно легко будет понять, что упомянутые сущности относятся к разным уровням. В данном случае можно выделить несколько уровней уровней:

1. Сетевое соединение - способ установить соединение между двумя приложениями (например клиентским и серверным). Сокет является представлением такого соединения на уровне операционной системы и приложения (т.е. этим пняием оперирует разработчик пишущий сетевое приложение).
2. Прикладной протокол - описывает взаимодейтвие клиента и сервера, чаще всего через установленное сетевое соединение (т.е. с програмной точки зрения через сокет). Например, HTTP или SMTP. Т.е. прикладные протоколы находятся над сокетами.

сокеты и сетевые протоколы относятся к модели ISO/OSI

3. Форматы обмена данных. Есть несколько универсальных форматов позволяющих описывать практически любые данные. К ним относятся, например, XML и JSON. JSON является альтернативой XML (он несколько проще и компактней). По JSON и XML есть соответствующие стандарты.
Данные в этих форматах могут храниться или пердаваться поверх прикладных протоколов (например поверх HTTP).

4. Модели данных (классы). Модель данных описывает определенный класс данных. Например, заказ. Она определяет какие свойства есть у заказа (дата, сумма, товар, покупатель, продавец, дата доставки и т.д.). Модели данных бумают универсальные и бывают разработанные под конкретное приложение. Существуют различные стандарты описывающие модели данных и связи между ними - XML schema, JSON-LD. Универсальные модели данных можно найти на schema.og. Разработчики приложения могут создать свою модель данных. Модели данных могут быть описаны как для XML так и для JSON.

5. API (программные компоненты) использующие модели данных. В частности SOAP и REST API. При этом SOAP является стандартом на подобные API и используется обычно для универсальных интегрируемых между собой компонент, SOAP использует XML. REST API это достаточно условный термин, который может быть применен практически к любому API который принимает или отдает структурированные данные (как поверх XML так и поверх JSON). SOAP ближе к объектной модели данных, REST API ближе к классическому API и используется для простых клиент-серверных приложений.
WSDL просто один из элементов SOAP.
Т.е. SOAP работает поверх XML schema поверх XML поверх HTTP (например) поверх соединения через сокет.

RMI в целом можно отнесети сюда же, но он менее универсальный, т.к. привязан к JAVA и использует внутренние бинарные представления данных а не какой-либо универсальный формат представления данных.

последние три уровня не относятся к модели ISO/OSI, это уже из область прикладной разработки / дизайна.

Вопрос про HD-фильм это вопрос из области можно ли переслать слона по почте. Через сокет можно передавать любые данные, в XML/JSON тоже можно упаковать любые данные, по прикладному протоколу тоже можно пердать любые данные и т.д. Более того, есть DLNA который фактически является REST API поверх XML и поддерживается любым современным телевизиром именно для передачи фильмов, в т.ч. HD. Т.е. создать конкретную реализацию приложений которая будет поддерживать HD фильмы можно, но ожидать что любая реализация SOAP/REST API поволит передавать HD фильмы нельзя, они делаются под определенные задачи.
На практике как правило есть конкретная реализация и ограничения, например на размер POST запроса или размер письма (SOAP может использовать SMTP, не только HTTP).
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@galliard
SOAP может передаваться и файлами, и через http, да хоть на бумаге. Вообще протокол не описывает способ передачи сообщений, а только их структуру. Передавать и получать завернутые в xml данные может любое клиен-серверное ПО, а "специализированное ПО" нужно для того, чтобы зоворачивать эти данные в xml и извлекать их из него. В качестве ПО типа SOAP UI встречается редко, и применяется в основном в целях отладки.

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

Сообщения JSON это любые сообщения в формате json. Могут иметь любую форму и структуру. В отличии от SOAP, где правила составления всех форм и структур четко регламентированы, сообщения JSON могут быть любыми, какими захочет разработчик. Это ускоряет и удешевляет разработку (любая обезьяна, едва научившись кодить, сварганит тебе говноапи за миску дошика) но усложняет интеграцию.

RMI по сути делает то же самое, только с меньшим количеством оберток. В случае использования XML или JSON апи нужно заворачивать данные в xml/json, потом в http, отправлять на http-сервер, который потом предаст их обработчику запроса, который в свою очередь распарсит xml/json, извлечет оттуда данные и вызовет наконец-то нужную функцию, получит ответ, и прокрутит эту цепочку назад чтобы отдать ответ. RMI же сериализует данные в бинарный вид и отправляет сообщение на сервер через сокет, там их десереализует, выполняет нужную функцию, сериализует ответ и отправляет обратно.

Да, REST - это стиль, который обычно не применяют к SOAP и RMI, которые традиционно придерживаются RPC - стиля. Насколько это в принципе возможно я не знаю, поскольку никогда не пробовал и даже не задумывался об этом.

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

Итого:
1. Нет. Нужно вариться в этом котле, понимание будет приходить со временем и постепенно.
2. FTP, HTTP, Web-Socket, TCP, UDP, XML-RPC, gRPC.
3. Да, можно, но не стоит этого делать, это не самый эффективный способ передачи подобного контента.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
Goodt Екатеринбург
от 100 000 до 150 000 ₽
Data World Москва
от 180 000 до 210 000 ₽
Selecty Москва
До 350 000 ₽