Ответы пользователя по тегу SOAP
  • Может ли микросервис based on REST API вызывать другой микросервис based on SOAP API?

    @galliard
    Может ли микросервис based on REST API вызывать другой микросервис based on SOAP API?

    Да.

    1. Это возможно только если каждая сторона имеет клиента, способных к взаимодействию друг с другом.

    Да. Но взаимодействие редко будет двусторонним. Обычно один из сервисов будет клиентом, то есть посылать запрос, а второй сервером, то есть обрабатывать его. Соответственно клиент (то есть программная компонента, формирующая запрос) нужна будет тому, сервису, который будет запрос посылать. Для обработки запроса клиент не нужен. (тут я применил слово "клиент" в двух разных смыслах, надеюсь не запутаешься)

    2. SOAP API это про Web Services ,а не про Microservices.
    В 99.99% да. Microservices - это про количество функционала у программы. SOAP API - это про интерфейс программы.

    Вообще SOAP - это просто правила формирования XML. То есть если ты карандашом на бумаге напишешь XML, свернешь этот листок и отдашь его своему другу, который его проглотит, и поедет, например, к твоей девушке, там просрётся, вытащит из своего говна этот листочек, и отдаст ей - то это тоже будет общение по SOAP протоколу. Главное - чтобы XML была сформирована по определенным правилам.

    Но чаще всего в качестве транспорта данных используют не желудок своего друга, а HTTP протокол.

    Это возможно только если Decoding-Encoding на обоих сторонах будет одинаковый

    Правила Decoding-Encoding регулируются стандартами, обе стороны обязаны их соблюдать.

    Это возможно только если на обеих сторонах используется одинаковая Decoding-Encoding library (например JAX API имеет для SOAP: JAXB, и для REST: JAX-RS). Но если использовать разные Decoding-Encoding library, то не сработает

    Стороны могут быть реализованы даже на разных языках программирования, на их общение это никак не повлияет.
    Ответ написан
    2 комментария
  • Что читать про интеграцию REST, SOAP, JSON, RMI и т.д для аналитика, который в этом ничего не понимает?

    @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. Да, можно, но не стоит этого делать, это не самый эффективный способ передачи подобного контента.
    Ответ написан
    Комментировать
  • Почему не удается получить ответ от сервера soap wsdl php Curl?

    @galliard
    WSDL нужна для кодогенерации, а не чтоб вручную xml пересылать.

    Вот например библиотечка https://packagist.org/packages/wsdl2phpgenerator/w...
    Код она генерирует сомнительного качества, но ничего лучше я не нашел (хотя искал несколько дней).

    CURLOPT_URL => 'lk-test.cse.ru/1c/ws/web1c.1cws?wsdl'

    Это ссылка для скачивания wsdl, сами запросы к апи посылаются по другому url (какой конкретно - указано в wsdl)
    Ответ написан