2013-05-10 2 views
0

Я получаю доступ к веб-службе, которая закодирована в C#. Я кодирую свое приложение в vb.net. Владелец webservice недавно улучшил WSDL, добавив несколько значений в перечисление и несколько других строковых значений для классов, открытых в WSDL.Почему WSDL меняет приложение vb.net?

Когда партнер обновил это WSDL, мое приложение прекратило надлежащим образом привязывать значения к моим объектам. Части моих объектов были заполнены значениями, но части объектов не были ... они были NULL.

Я открыл исправленный код и обновил веб-ссылку, и код снова начал работать. Мой код работает нормально, но я пытаюсь понять, почему это произошло. Это какой-то артефакт кодирования в VB.net или это что-то с чем? Моя забота - только о будущем планировании.

Благодарим за помощь.

ответ

0

Они изменили свой API и нарушили совместимость со своим старым. Тот факт, что они опубликовали WSDL, упростил вам изменения, но как только их обновленный веб-сервис запущен, клиенты, созданные из этого оригинального WSDL, будут работать или не работать (в зависимости от характера изменения). Вы можете понять, что это произошло бы на любом другом языке. Общей практикой управления этим поломкой является размещение обновленных WSDL на разных URL-адресах (обычно с номером версии в URL-адресе). Это упрощает запуск разных версий параллельно и не разбивает старые приложения. Время от времени вам нужно разорвать ваш API, поэтому иметь хорошую связь с вашими клиентами также является ключевым. Мне нравится делать мои API-интерфейсы, что я сначала отказываюсь читать только сообщения об ошибках, которые помогают разработчику понять, что происходит, и я запускаю электронное письмо или забираю телефон, как только вижу API-вызов устаревшего API. Очевидно, что это не будет работать для PayPal, но если это вариант, он может поддерживать партнеров счастливыми, и до сих пор это стоило моего времени.

Смежные вопросы