Pull to refresh

Comments 8

UFO just landed and posted this here
Вам — тяжело, а я знаю проекты, где датасеты (нетипизованные!) используются до сих пор.
я например тоже знаю (конечно там не весь проект такой)… и я даже в некоторой степени «за» — там из веб сервиса наружу вываливается DataSet\DataTable, который попросту скармливается CrystalReport-у на принимающей стороне безо всяких преобразований. Просто, очень просто… и, в некоторой степени, даже понятно…
Это означает, что у вас репорт сильно связан с вебсервисами (и, что хуже, в обратную сторону). Стоит веб-сервису поменяться, как вы получите ошибку периода выполнения.
Интересно, а как можно написать логику, чтобы при принципиальном изменении веб-сервиса, возвращающего данные для представления, не получить ошибку периода выполнения?
Я даже скажу, что датасеты в этом плане более гибки — можно добавить сколько угодно новых таблиц/полей, даже типы поменять (в разумных пределах) и новый веб-сервис будет работать со старыми клиентами, как и раньше, чего не скажешь про веб-сервисы, возвращающие объекты/списки объектов.
Интересно, а как можно написать логику, чтобы при принципиальном изменении веб-сервиса, возвращающего данные для представления, не получить ошибку периода выполнения?

Логика тут вообще не при чем. А вот как так написать контракт — да легко. Регулярно забираем wsdl и сравниваем с тем, по которому построено наше приложение. Что характерно, описано у Томаса Эрла в SOA.

Я даже скажу, что датасеты в этом плане более гибки — можно добавить сколько угодно новых таблиц/полей, даже типы поменять (в разумных пределах) и новый веб-сервис будет работать со старыми клиентами

Это неверифицируемо статическим анализом. Что, в общем случае, плохо.
да я бы сказал, что не только в веб-сервисах они зло.
не ожидал встретить их на практике. однако, сегодня пришлось попользоваться сервисом курсов валют ЦБ РФ — www.cbr.ru/dailyinfowebserv/dailyinfo.asmx

забыл уже, когда последний раз кастил object к string или decimal ))
Sign up to leave a comment.

Articles