Как нужно возвращать структуру веб-сервисом? #791773


#0 by vi0
Создаем веб-сервис с пакетом . В операции у возвращаемого значения тип указываем Structure. Фактически в операции возвращаем значение СериализаторXDTO.ЗаписатьXDTO(Новый Массив). И все проходит без ошибок. Почему так? Это корректное поведение? Как нужно организовывать веб-сервис, чтобы возвращать тот или иной тип?
#1 by Fragster
ошибка будет на вызывающей стороне (если это 1с)
#2 by vi0
не будет, я проверял
#3 by DrShad
вызывающая сторона кто?
#4 by vi0
#5 by Fragster
результат = Прокси.Метод и результат прям массив?
#6 by vi0
результат типа ОбъектXDTO после выполнения СериализаторXDTO.ПрочитатьXDTO(ОбъектXDTO1) получается массив платформа 8.3.9.1850
#7 by Fragster
демонически обновлял?
#8 by Fragster
был он когда-то массивом?
#9 by vi0
да, нет чистую базу создал могу прикрепить сюда
#10 by Fragster
прикрепи к письму в техподдержку 1с. у нас тут только психологическая поддержка.
#11 by vi0
скажу больше, любое сериализованное значение проходит проверял число, дату, структуру, массич
#12 by vi0
я напишу в 1с, да интересно и тут перетереть
#13 by DrShad
веб сервисами пользуюсь, но никогда не заморачивался с типами - мне тупо нужен был всегда JSON массив, а с ним проблем нет он тупо передается как строка
#14 by vi0
почему именно JSON массив?
#15 by DrShad
с ним легко работать
#16 by Fragster
потому что кое-кто путает http и web сервисы
#17 by DrShad
нифига я не путаю
#18 by Fragster
в веб сервисах хорошо, что структура данных прибивается гвоздями. в этом плане я не одобряю , кстати
#19 by vi0
чем именно JSON легче чем xml сериализация?
#20 by vi0
ээ.. не одобряешь что именно?
#21 by DrShad
вот запрос к веб-сервису   а вот ответ
#22 by Fragster
а нафига? я понимаю, когда из жабаскрипта вызываешь - там json актуален, и хттп сервисы проще, но в вебсервисах-то зачем?
#23 by Fragster
это хттп сервис
#24 by DrShad
мне на стороне сайта с ним легче работать, а объяснять долго
#25 by DrShad
это веб-сервис спорим?
#26 by Fragster
ты вызываешь php, как ты в пхп крутишь данные - мне неизвестно. объекты XDTO на стороне php преобразуются в объекты php, при указании класса - еще и с методами. то, что ты делаешь - можно сделать и без лишней прослойки из php.
#27 by Fragster
только http сервисами
#28 by DrShad
можно, но сделано как сделано, увы
#29 by DrShad
да и вызывается не php как таковой, а юзается его SOAP-Client
#30 by Fragster
более того, эти самые объекты XDTO после преобразования в объекты php, потом замечательно сериализуются средствами php при необходимости, а на стороне php мы работаем с объектами без лишних телодвижений
#31 by Fragster
как раз из-за того, что в js нету своего соап клиента. так вот, без прослойки это можно сделать на http сервисах 1с и будет работать быстрее (и сам вызов http сервиса и отсутствие прослойки)
#32 by DrShad
совет давно понятен, но работает - не трожь со временем перепишем
#33 by Fragster
ну так не надо свои костыли выдавать за правильную архитектуру
#34 by DrShad
а где я претендовал на правильность?
#35 by Fragster
в
#36 by DrShad
может еще раз перечитать ?
#37 by Fragster
при формировании своего пакета (xsd схемы) мы прибиваем гвоздями структуру данных, при использовании Массива, json и прочего - мы "договариваемся" о структуре данных. и тогда получается, что при расширении структуры начальная документация, даже если и была - становится не актуальной, а на актуализацию все забивают. А в случае жесткой схемы - мы вынуждены её модифицировать, получая самодокументируемость.
#38 by Fragster
+ конечно, неполную, но лучше, чем ничего
#39 by Fragster
я прочитал как "забей на схемы, используй строку с json"
#40 by DrShad
ну так это же не мои проблемы )))
#41 by vi0
ты имеешь ввиду, что всегда при использовании непримитивных типов нужно делать свой XDTO-пакет в дереве метаданных и его указывать в веб-сервисе? чтобы клиент мог через фабрику читать xdto-пакеты?
#42 by Fragster
что-то типа того. для сервисов, предназначенных для одинаковых конфигураций объекты конфигурации можно юзать из current-config, но всякие структуры - да, прибивать гвоздями в пакете с именами и типами свойств.
#43 by vi0
типа того или именно так? что ты подразумевал под самодокументируемостью?
#44 by Fragster
именно так! самодокументируемость - то, что не надо глядеть в код для получения состава передаваемой информации. То, что клиент (в которого загружен пакет) понимает, что что-то на сервере изменилось, и, возможно, надо менять алгоритмы взаимодействия. Ну, по крайней мере, произвести их инспекцию и задать вопросы разработчикам серверной стороны.
#45 by vi0
хм.. мне кажется, если подобное происходит, то это недоработки серверной части. недоработки в том смысле, что не оповестили клиента для этого нужно скорее вводить версионность структуры возвращаемых данных к примеру часть клиентов уже перешла на следующую версию, часть нет, и мы возвращаем разные структуры
#46 by Fragster
версионность нужна, да. независимо от того, прибиваем, или нет, гвоздями.
#47 by dubraver
У клиента должна быть xsd схема, для десериализации объекта. Если xml пришедший из web- сервиса не проходит проверку схемой, то значит изменилась схема на сервере и необходимо об этом оповестить клиента.
#48 by vi0
А не поздно ли оповещать клиента, если xml уже не прошел проверку на клиенте?
#49 by vi0
1с сказала - так и нужно. ошибки нет
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С