/ / Автоматична сериализация - vb.net, сериализация, xsd

Автоматична сериализация - vb.net, сериализация, xsd

Искам да изтегля xsd спецификации от мрежатауслуга и автоматично преобразуване (сериализиране) на тези схеми в класове (визуално студио - vb.net). Ако организацията, която отговаря за xsd схемите, ги променя по начин, по който само моят клас, съответстващ на xsd, трябва да бъде променен (не останалата част от моя код), бих искал автоматично да актуализирам съответния xsd клас. Това възможно ли е? Ако е така, може ли някой да ми каже как да го направя?

Благодаря!

Използвам vs2010. Това, което искам да направя, е: да се обадя на уеб услуга, където да изпратя входен параметър към услугата, която указва xsd, която искам да изтегля (услугата е GetShemaDefenition и връща обект със спецификацията на схемата в свойството низ на обекта ). Ден трябва да прочетете xsd низ от свойството низ и да конвертирате това в представяне на клас на тази xsd спецификация. Възможно ли е това автоматично? Направих това ръчно с помощта на xsd.exe. Ако организацията на собственика на xsd е променила спецификацията на xsd, трябва да тествам дали има нова спецификация и дали трябва да създам ново представяне на този клас на xsd? Възможно ли е да направя това, което искам? И как ще знам дали е голяма промяна в xsd, която засяга и други части от моя код, а не само класовото представяне на xsd?

Танците много за вашия отговор! Така че това, което казвате, ако ви разбирам правилно, е, че няма добро решение за автоматизиране на тази функционалност, защото ако промените xsd аз най-вероятно (в някои случаи) трябва да променя кода си ръчно? Така че трябва да избирам или в моята молба, или в моята междинна услуга? Но каква е целта за предоставяне на xsd в уеб услуга? За какво мога да използвам уеб услугата? Просто се чудя, може би е ясно, но аз съм нов в уеб услугите и имам желание да науча повече.

Update:

Благодаря! Но може ли да обясните малко повече. Това, което трябва да направя е: използвам една уеб услуга, където едно от свойствата е низ. Низът е XML в CDATA блок. Организацията, която предоставя уеб услугата, няма да изрежда xml в блока CDATA, а вместо това да я препрати към друга организация, която ще използва XML данните. Организацията, която използва XML данни, посочва xsd schem, която трябва да следвам, за да генерирам xml правилно. Това е xsd схемата, която мога да получа от друга уеб услуга. Наистина не разбирам какво мога да направя с този xsd файл от уеб услугата. Какво мога да направя с него и защо искам да го изтегля от уеб услугата, когато не мога да я използвам автоматично? Тъй като трябва да направя ръчно промените, когато промените xsd мога лесно да изтегля схемата xsd от началната страница на организацията и да направя новия клас с xsd.exe. Разбирам, че има нещо, което не разбирам: о) може ли да се изяснят молитвите?

Отговори:

0 за отговор № 1

Каква визуална версия на студиото използвате?, Обикновено можете да щракнете върху препратките на проекта и Добавяне на уеб услуга. В този случай Visual Studio автоматично създава обектите, необходими за консумация на услугата.

Но ако е много вероятно да се променя често, ЕдноРешението е да се въведе клас адаптери. Използвайте създайте интерфейс, който осигурява същата функционалност и се обадете на действителната уеб услуга. В приложението ви се използва само прокси клас, а не уеб услугата. По-късно, когато интерфейсът на уеб услугата промени всичко, което трябва да направите, е да промените вътрешността на този междинен клас.

Update:

можеш да използваш този инструмент да създадете обектен модел в код. Тогава можете компилирайте новия си обектен модел и да го използвате във вашето приложение. Има много усложнения в това, което искате да направите, а долната линия е; когато обектният модел се промени, кодът ви ще се провали. Няма абсолютно никакъв начин да си представите как интерфейсът ще се промени, докато можете да направите всичко, което автоматично няма какво да направите, ако името на дадена функция се промени.

Въпреки това отговорът на вашата ситуация еоколен път. Ако не можете да гарантирате стабилността на външна услуга. Защо не създадете стабилна междинна услуга, която извиква реалния? Всичко, което трябва да направите, е да промените междинната услуга, като същевременно го запазите съвместима с интерфейса.