可変量のパラメータを Web サービスに渡す方法
-
09-06-2019 - |
質問
可変量の変数を渡す予定の Web サービスを作成しようとしています。
これはできるでしょうか?
基本的に、可能なパラメータをすべて渡すのではなく、設定値のみを渡し、Web サービスに設定されているデフォルトを使用したいと考えています。
これは送信しようとしている 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>
これでうまくいくでしょうか、それとも別の方法をとるべきでしょうか?
解決
このために具体的な関数を実行する代わりに、xml ドキュメントを渡します。
あなたの例のWebサービスは漏洩しています - 消費者はこのインターフェースとWebサービスの内部実装についてあまりにも多くのことを知る必要があります。
XML ドキュメントを作成し、それを XSD と結び付けます。こうすることで、Web サービスへの入力を事前検証できます。
これらを見てください
また、Web サービスとその無料のテストにこれを使用することをお勧めします。WSスタジオ
他のヒント
可変長配列をパラメータとして渡すだけです。
配列のアイデアが気に入らない場合(これは Konrad の答えを決めているわけではありません - 異なるパラメータタイプがある可能性があります)、複雑なオブジェクトを渡すことができます(つまり、自分で作ったオブジェクト)欠点は、ASMX ページを使用してテストすることができず、すべてをコード内で実行する必要があることです (これは、特に慣れている場合は特に悪いことではありません)。
私は littlegeek さんの意見に同意します。Webサービスを作るのは難しい方法ではありません。受信する受信エンドポイントにする メッセージ. 。特にコマンドメッセージ。