Как передать переменное количество параметров в веб-сервис - PullRequest
4 голосов
/ 29 августа 2008

Мы пытаемся создать веб-сервис, который мы планируем передавать в него переменным количеством переменных.

Можно ли это сделать?

По сути, вместо передачи всех возможных параметров мы хотим передать только заданные значения и использовать значения по умолчанию, установленные в веб-сервисе.

Вот пример 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>

Будет ли это работать или мы должны поступить иначе?

Ответы [ 4 ]

5 голосов
/ 29 августа 2008

Я бы передал XML-документ вместо того, чтобы делать для этого конкретные функции.

Веб-служба в вашем примере имеет утечку - потребитель должен знать слишком много об этом интерфейсе и реализации веб-службы внутри страны.

XML-документ, а затем связать его с XSD. Таким образом, вы можете предварительно проверить ввод в веб-сервис.

Взгляните на эти

IBM Developer ASP.NET Forum

Я бы также рекомендовал использовать его для тестирования веб-сервисов и его бесплатного WSStudio

0 голосов
/ 29 августа 2008

Я согласен с Littlegeek. Не делайте ваш веб-сервис сложным методом. Сделайте его конечной точкой для получения сообщений . В частности, командное сообщение.

http://www.eaipatterns.com/CommandMessage.html

0 голосов
/ 29 августа 2008

Если вам не нравится идея массива (это не ответ Конрада - у вас могут быть различные типы параметров), вы можете передавать сложные объекты (то есть объекты, которые вы сделали сами). Недостатком является то, что вы не можете затем проверить используя страницу ASMX, но нужно было бы делать все это в коде (что не так уж и плохо, особенно если вы к этому привыкли).

0 голосов
/ 29 августа 2008

Вы можете просто передать массив переменной длины в качестве параметра.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...