Введение
По мере продолжения сравнения это кажется немного странным. В то время как первые два являются (являются) общими конкурирующими «стандартами», два разных стандарта имеют несколько уникальную сферу применения.
Их объединяет часто встречающаяся концепция статистических манипуляций. Каждый из них позволяет внешнему объекту получать доступ к вашей информации в определенных пределах.
SOAP
«Простой протокол доступа к объектам» (хотя о его значении обычно забывают, поскольку это что-то простое) - самая старая и самая табуированная машина для доступа к файлам в моем университете на протяжении многих лет. Он сообщает об использовании содержимого XML через HTTP (однако в большинстве случаев обход не является частью моды , поэтому его следует использовать для чего угодно) с конкретной целью вызова критериев обнаружения через service.
Это заставляет провайдера описывать доступные процедуры, их параметры и типы, формат тела, ответ и т. д., а также объекты. Готов поспорить, вы видите, где простота умерла давным-давно.
Плюсы
- Утвержденный SOAP в основном для технологии кода на основе XML, XML хорошо известен и широко распространен с большой гибкостью (например, пространства имен) .
- Поскольку он основан на тексте, отладка удобна и нет ограничений по транспорту. Поскольку подходы описаны в WSDL, файл действует как связывающий контракт для просмотра сообщений и типов.
Минусы
- XML очень подробный, и объем сообщений имеет тенденцию к экспоненциальному росту. По необходимости SOAP является односторонним (поскольку клиент не может добавить сервер и наоборот, даже если каждая функция может действовать как сетевой сервер).
- Поддержка технологии кода на текущих языках минимальна (ваши главные ставки - Java, Python и C #, в то время как SOAP с Go / Rust / PHP / Elixir неутешительны в программах обучения) .
- В целом , SOAP все еще жив в пользу более гибких и экологически безопасных методов вербального обмена (хотя мои кошмары вернулись после нескольких страховых и банковских обязанностей). ряд).
ОТДЫХ
- Представительный переход - это, вероятно, то, что большинство людей предполагает, когда кто-то говорит « веб-API». Фактически, это так хорошо известно, что люди используют этот элемент, когда кто-то говорит «API», не говоря уже о сетевой (или HTTP) части.
- Как стандарт, он чрезвычайно легкий, поскольку определяет исключительно использование стандартов HTTP и HTTP (глаголы, коды, состояния и т. Д.)
- Это привело к появлению множества лучших практических сценариев вокруг REST, связанных с не -dit: как разграничивать и сортировать URI, ограничивать обрабатываемую статистику определенным URI, как инкапсулировать данные, как и что возвращать и т. д.
- Другой важной функцией REST является отсутствие состояния: между запросами не сохраняется контекст, каждый запрос обрабатывается отдельно и должен иметь собственное назначение.
- Хотя JSON является наиболее распространенным типом содержимого для данных REST, XML больше не является загадкой, и доступен сам HTML.
Плюсы
Он основан на существующих HTTP-запросах и обладает всеми возможностями и ограничениями. Большинство проблем с трафиком решаются с использованием текущих требований и их развития. Глаголы, относящиеся к транзакциям (например, упрощение отображения транзакций CRUD), организациям, предоставляющим ценные бумаги, и что это означает для URI. Простые соглашения делают взаимодействие с REST API довольно простым. JSON делает REST особенно простым в использовании для интерфейсных служб, где JS повсеместно используется для мгновенного перевода записей в объекты. Кроме того, JSON вполне читаем и полезен для отладки.
Минусы
На практике сервисы REST почти никогда не оправдывают ожиданий. Существует бесчисленное количество споров о том, какие глаголы использовать, когда и соответствуют ли обнаруженные объекты информации, смоделированной в слое статистики (подсказка: не раскрывайте факты). такого рода детали, используйте DTO для победы.). Гибкость часто приводит к хаосу реализации и, прежде всего, к отсутствию обязывающего контракта в форме, используемой для сообщений. Один из моих домашних воров - это когда человек все еще возвращает ответ HTTP 200 и, в свою очередь, кодирует восприятие ошибки в теле ответа.
GRPC
- gRPC - это современный легкий протокол связи от Google. … Это рекурсивная аббревиатура, обозначающая удаленный вызов процедуры grpc. gRPC был создан Google в 2015 году. Он был основан на внутреннем проекте Google под названием Stubby, который был внутренней структурой для gRPC, но только для сервисов Google.
- gRPC - это современная среда удаленного вызова процедур (RPC) с открытым исходным кодом, которая может работать где угодно. Он позволяет клиентским и серверным приложениям прозрачно обмениваться данными и упрощает построение связанных систем.
Плюсы
Очень эффективный. Он использует все, что может предложить HTTP / 2, поэтому вы можете отправлять вопросы синхронно (ожидая ответа), вы можете транслировать, вы можете мультиплексировать, и все это в одном и том же соединении. Добавьте к этому тот факт, что двоичные сообщения настолько малы, что у вас есть много конфет для тех случаев, когда общая производительность имеет решающее значение. Эпоха кода делает его проще, а HTTP / 2 требует TLS, поэтому вам нужно иметь минимальную безопасность.
Минусы
Сложно отлаживать, поскольку сообщения являются двоичными и теперь нечитаемы людьми. Хотя он поддерживается на всех языках, существуют некоторые препятствия (например, нет сервера PHP gRPC, только клиент), и из-за природы HTTP / 2 в пользовательском интерфейсе приложения может не быть какой-либо помощи (в настоящее время). Поскольку вы должны (и должны) иметь TLS повсюду, вы, вероятно, захотите установить важный компонент (будь то получение сертификата для внутреннего использования от доверенного центра сертификации или разработка центра сертификации), свой собственный внутренний для проблем с сертификатом, однако вы я захочу добавить его как доверенного для всей вашей инфраструктуры / контейнера / и т. д.).
GRAPHQL
GraphQL позволяет вам запрашивать то, что вы хотите, в одном запросе, экономя пропускную способность и сокращая количество водопадных запросов. Он также позволяет клиентам запрашивать собственные уникальные спецификации данных. Разработчики API используют GraphQL для создания схемы для описания всех возможных данных, которые клиенты могут запрашивать через эту службу. Схема GraphQL состоит из типов объектов, которые определяют, какой тип объекта вы можете запросить и какие поля у него есть. По мере поступления запросов GraphQL проверяет их соответствие схеме.
Плюсы
Его зависимость от JSON делает его чрезвычайно мощным REST, но с введенным преимуществом возможностей адаптивного запроса вы можете запрашивать статистику, которую хотите, как вам нравится = ›нет Для получения всего, что вам нужно, требуется несколько требований. У него есть проверка схемы и ввод, поэтому этот тест довольно близок к тому, как gRPC определяет вещи.
Минусы
Всякая гибкость влияет на потенциал кеширования. Практически никакие запросы GraphQL не могут сравниться с делегированным кешированием. Несмотря на название, это уже не красиво оформленный интерфейс. Например, вы не можете получить всех предков объекта-хранителя.
Спасибо за чтение, дайте мне знать свои вопросы, мысли или отзывы в разделе комментариев. Я ценю ваши отзывы и поддержку.
Продолжай учиться!