XML Web-службы в Microsoft SQL Server 2005 - Visual Studio .NET 2003
ОГЛАВЛЕНИЕ
Visual Studio .NET 2003
В старой версии среды разработки дела с использованием Web-служб Yukon обстоят хуже. .Net Framework 1.1 не умеет работать со сложной версией WSDL-документа SQL Server 2005. При генерации самого proxy-класса ошибок не возникает, однако при его создании инициируется исключение — «Method couldn’t be reflected». Единственная возможность работать с Web-службой заключается в использовании простого WSDL-документа. Однако и здесь все не так просто. Скалярные методы вызываются прекрасно, но методы, возвращающие набор строк, представляют результаты в виде объектов типа XMLDocument. Для набора строк XMLElement содержит XML в формате diffgram, который, однако, не может использоваться для создания DataSet. Дело в том, что формат встроенной схемы, которая возвращается вместе с набором, непонятен классу DataSet из .NET Framework 1.1 и ниже. Отказаться от генерации встроенной схемы можно (см. синтаксис команды create endpoint), но формат diffgram устроен таким образом, что наличие информации о схеме данных для него является обязательным. Выход из ситуации только один — самому вручную или автоматически создавать схему для DataSet на клиенте.
Конечно, это не самый удобный и правильный метод. При любом изменении в Web-методе придется изменять код клиента, дабы структура DataSet отвечала соответствующей структуре результирующего набора строк. Однако, если структура сообщений изменяться не будет, можно сгенерировать типизированный DataSet, и тогда работа с результатами вызова Web-метода станет существенно проще.