LINUX.ORG.RU

Проблема с API, которое использует протокол SOAP

 , , ,


0

1

Мне надо написать небольшое API, которое будет использовать протокол SOAP. С этим протоколом я не был знаком. Решил писать на PHP и использую схему wsdl.
Пример wsdl скачал из интернета и по примеру вручную написал свой код схемы. Суть задания такая - есть много таблиц с данными. Таблицы по структуре отличаются друг от друга. мне надо организовать добавление новых данных. я вроде как все это сделал. у меня есть функция в wsdl которая передает массив данных, любого размера и типа, а уже на серверной стороне средствами php я разбираю этот массив. Меня смущает следущее, может для каждой таблицы надо написать отдельную обработку wsdl и тогда более точно можно будет контролировать передаваемые данные, или такой вариант как я сделал подойдет? Или может есть другие, более правильные пути реализации этого задания

Перемещено leave из general


функция в wsdl которая передает массив данных, любого размера и типа, а уже на серверной стороне средствами php я разбираю этот массив

поздравляю тебя, ты на корню похерил идею soap

Меня смущает следущее, может для каждой таблицы надо написать отдельную обработку wsdl и тогда более точно можно будет контролировать передаваемые данные

правильно смущает

такой вариант как я сделал подойдет

даже в самой паршивой хобзе – нет, не подойдёт

anonymous
()
Ответ на: комментарий от anonymous

Спасибо. Теперь мне точно понятно, что надо переделывать. Дайте пожалуйста совет как? Или ссылки на нужную информацию. Использовать буду php, нет времени разбираться например с java

Kohan
() автор топика
Ответ на: комментарий от Kohan

Мя не знаю php. В джаве wsdl автоматически генерируется сервером на основании сигнатур методов обработчиков и их аннотаций, потом по нему генерируется клиент, и на этом всё. На клиенте дёргаешь, грубо говоря, server.sendPhoto(photo), на сервере магически происходит вызов этого метода с переданной фоткой. В простых случаях вообще никакой ручной работы. 1С работает примерно так же, наверное, и для php есть генератор как wsdl из кода сервера, так и клиента по нему.

Как грамотно организовать обмен многими таблицами через соап, мне неизвестно. Возможно, тебе больше подходит graphql?

izzholtik ★★★
()
Последнее исправление: izzholtik (всего исправлений: 1)
Ответ на: комментарий от Noob_Linux

Да читал. Но здесь нет информации об wsdl. Простые примеры я могу реализовать вручну, но как быть со множеством таблиц, неужели для каждой таблицы писать отдельные функции в php и описание в wsdl?

Kohan
() автор топика
Ответ на: комментарий от Kohan

главное тут - не soap и даже не php.

потому что

неужели для каждой таблицы писать отдельные функции в php и описание в wsdl

это тупик. тебе надо определиться с программным интерфейсом (набором методов), который будет делать какие-то осмысленные действия и который ты потом хочешь экспортировать через soap и именно интерфейс описывать, а не «функции для каждой таблицы»

почитай чё-нить.. domain driven design там или еще чо…

aol ★★★★★
()

Зачем тебе вообще SOAP? Это довольно старый, неэффективный и неудобный подход. Я понимаю ещё, когда нужна совместимость с каким-нибудь legacy кодом или API. Начинать делать что-то новое в 2021 году на SOAP?.. Напрасная инвестиция в изучение полудохлой технологии, которая даже во времена своего расцвета никому не нравилась.

Кроме того, у тебя какое-то очень странное описание задачи. Если тебе надо данные из таблиц туда-сюда гонять, то может быть тебе надо просто через sftp гонять дампы бд, сделанные pg_dump/mysqldump?

emorozov
()
Ответ на: комментарий от Miguel

А вот это уже вкусовщина. Ничего лучше в мире* ещё не изобрели.
* в мире 1С

izzholtik ★★★
()

Просто передаёшь массив объектов с соотв. полями. Не очень понимаю что тут можно придумать и зачем.

Legioner ★★★★★
()
Ответ на: комментарий от Kohan

Заказчик идиот? Или у него там Java 5 прикручена в каком-нить древнем сельхоз банке?

menangen ★★★★★
()
Последнее исправление: menangen (всего исправлений: 1)
Ответ на: комментарий от Kohan

Я думал тебе wsdl уже выдали. Если надо построить своё, на бросай wsdl сам, а по нему уже генерируй набор классов. В packagist полно генераторов типо этого https://packagist.org/packages/wsdl2phpgenerator/wsdl2phpgenerator

да вообще задача выглядит так что тебе нужен генератор CRUDов только на SOAP

Noob_Linux ★★★★
()
Ответ на: комментарий от izzholtik

Такое уже даже в мире 1С считается головотяпством.

Головотяпство — это «данные таблиц» гонять через SOAP.

Задача или не сформулирована, или сформулирована неверно. Сейчас вроде бы люди уже понимают, что самое важное в задаче: понятная и правильная формулировка.

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

Задача в описании явно именно такая. Тут хоть SOAP используй, хоть Kafka, хоть Protocol Buffers, на выходе всё равно ничего путного не получится.

emorozov
()
Ответ на: комментарий от Noob_Linux

Мне ни чего не выдавали, надо самому сделать. Пока что я пробую использовать библиотеку nusoap которая cама генерирует wsdl.

Kohan
() автор топика
Ответ на: комментарий от Shadow

будто csv по http сильно лучше

Сильно лучше. Если навернуть с утра нигилистических теорий, то да, кажется, что там байты через сеть, что тут байты через сеть, ну какая, к чёрту, разница, но на практике количество сбоев разнится на порядок.
Ещё лет 5 назад типичный обмен между базами выглядел как VPN + беспарольная виндовая шара или FTP с анонимным доступом, куда одна база по таймеру писала XSLX с изменениями, а вторая по таймеру же его вычитывала, ни проверок, ни переотправки, нифига. Так что даже одноэсники постепенно эволюционируют x)

izzholtik ★★★
()
Ответ на: комментарий от emorozov

не получится

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

izzholtik ★★★
()
Ответ на: комментарий от izzholtik

с т.з. информатики это самый трушный метод. потому что любой soap, xml, json и пр. - это представление деревовидной структуры данных. а вот sql - это полноценный граф.

дерево в общем то тоже граф, но не любой граф - дерево.

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

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.