Мы пытаемся создать веб-сервис, который планируем передавать ему переменное количество переменных.
Можно ли это сделать?
По сути, вместо того, чтобы передавать все возможные параметры, мы хотим передать только установленные значения и использовать значения по умолчанию, установленные в веб-сервисе.
Вот пример XML, который мы хотим отправить, мы бы отправили неизвестное количество функций в зависимости от необходимого возврата.
<?xml version = "1.0" encoding = "utf-8"?>
<soap:Envelope xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd = "http://www.w3.org/2001/XMLSchema" xmlns:soap = "http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<WebMethod xmlns = "http://tempuri.org/">
<domains>
<function1>
<title>Some Title</title>
<type>25</type>
</function1>
<function2 />
<function3>
<param>13</param>
</function3>
</domains>
</WebMethod>
</soap:Body>
</soap:Envelope>
Будет ли это работать, или нам следует поступить иначе?





Вы можете просто передать массив переменной длины в качестве параметра.
Если вам не нравится идея массива (это не план ответа Конрада - у вас могут быть разные типы параметров), вы можете передавать сложные объекты (то есть объекты, которые вы создали сами). Обратной стороной является то, что вы не можете затем протестировать с помощью ASMX страницу, но нужно будет делать все это в коде (что на самом деле неплохо, особенно если вы к этому привыкли).
Я бы передал XML-документ вместо того, чтобы делать для этого конкретные функции.
Веб-сервис в вашем примере негерметичен - потребитель должен слишком много знать об этом интерфейсе и внутренней реализации веб-сервиса.
XML-документ, а затем свяжите его с XSD. Таким образом, вы можете предварительно проверить ввод в веб-сервис.
Взгляните на эти
Я бы также рекомендовал использовать это для тестирования веб-сервисов и его бесплатных WSStudio
Я согласен с littlegeek. Не делайте ваш веб-сервис жестким методом. Сделайте его конечной точкой приема для приема Сообщения. В частности, командное сообщение.