Moridin wrote:Абе някой да се е занимавал с wsdl по-сериозно?
Не толкова сериозно, колкото би ми се искало, а дотолкова, доколкото съм се занимавал, е било с технологии, за които се опитвам да забравя (и, да, това включва Java и .NET и Axis и IIS и още няколко подобни нещица

), но все пак точно по този въпрос може и да мога да помогна...
Moridin wrote:Поддържа ли се възможност някой от класовете, в случая клас, който е типът на резултата на уеб-метод, да се опише така, че оригиналните му полета, които са константи, да влязат във wsdl-а?
пример (java)
class Result {
public static final int ERROR = 0;
public static final int SUCCESS = 1;
...
Сега ясно, че ПРИНЦИПНО wsdl-а не е мислен за това, но понеже реално не виждам какво пречи да има и такъв елемент в него (който описва константи), тъй като това не е нищо динамично и не нарушава bean contract-а...
Ми... тако'ата... всъщност не. Всичко се съдържа в това, което сам казваш - че принципно WSDL не е мислен за това. Перефразирай това твое изказване до "във WSDL стандарта няма описани константи", след което го обърни това към "дори и да намеря някакъв начин да предавам стойностите на константите между реализация X и реализация Y, няма да имам никакви гаранции, че утре, когато прехвърлим нещата на реализация Z, това още ще работи"... и ще видиш защо казвам "всъщност не"
Какво да правиш оттук нататък? Ами като изключим очевидното "ми включваме списъка с константите и стойностите им в техническата докиментация и се надяваме да успяваме да ги държим синхронизирани", имаш основно два варианта:
1. Не използваш чисти константи, а дефинираш функции, които да връщат като резултат константата; хората, които са ползвали примерно Perl и неговите "use constant", би трябвало да знаят за какво говоря. Разбира се, не говорим за реализация порода "ми викаме функцията, после правим if (res == wsdl.ERROR()) { ... }, после викаме друга функция, после пак if (res2 == wsdl.ERROR())", щото всяко такова "извикване" на функцията ще бъде всъщност обръщение към уеб-услугата, а ти не искаш чак
толкова много трафик

Говоря за вариант с "кеширане" на стойностите - веднъж в началото на приложението викаш SUCCESS(), ERROR(), NOTIMPL(), DONTEVENTHINKABOUTIT() и всичките други такива функцийки, които връщат "константите", и си ги запазваш в твои си променливки и после сравняваш с тях.
2. Може би малко по-добро решение, или поне малко повече в духа на уеб-услугите - изброени класове:
съобщение в пощенски списък, описващо идеята
Тук очевидният проблем е, че не можеш да задаваш истински стойности на "константите", и че ако различните платформи ги задават различни, ще стане не боза, ами и аз не знам какво.
Другият проблем е, че... не можеш да задаваш истински стойности на константите

и не можеш да направиш примерно това, което аз много обичам (C, разбира се):
typedef enum {
ERR_NONE = 0,
ERR_NOMEM = 1,
ERR_CMDLINE = 2,
...
ERR_ID10T_USER = 14,
ERR_ID10T_MYSELF = 15,
ERR_LAST = 15
} err_t;
...и после да мога да скимтя if (err > ERR_LAST) и да правя други благинки като const char *errstr[ERR_LAST + 1] = {"...", "...", ...};
Разбира се, бих могъл да си пренапиша нещата така, че вместо ERR_LAST да имам ERR_INVALID с първата невалидна стойност, но... абе... таковата... мрррзи ме да си променям навиците
Moridin wrote:А да, не питайте що не ползваме exceptions, не го решавам аз

Да бе... да взема и да питам що не ползваш exceptions... как беше онова, библейското - "който няма грях, да хвърли първи камък"... предста'аш ли си баш за WSDL и exceptions да те питам
