0

メソッドが1つしかないWebサービスにアクセスするC#コードを作成したいと思います。

public string HandleRequest(string xml).

リクエスト自体はxmlで送信されます。ここで、xmlコンテンツは、実行するアクションのタイプと、必須/オプションのパラメーターも指定します。

サービスからの応答もxmlで返され、送信されるリクエストタイプごとに異なる場合があります。

このサービスとのやり取りを容易にし、次のことができるソリューションを設計したいと思います。

  1. 指定されたパラメーター(アクションタイプ、その他のオプションの引数など)から動的にxmlを生成します。現在、xmlはすでに作成されたファイルからロードされます
  2. 簡単な方法で応答を解析します(それから強く型付けされたオブジェクトを作成しますか?)

これを行うための良い解決策は何ですか?要求/応答xmlは動的であり、呼び出しごとに変わる可能性があるため、1つを思い付くのは難しいと思います。

いくつかの追加情報:

  1. このサービスはJavaベースであり、Tomcat(Axis 1.2)でホストされています。
  2. サービスのwsdlドキュメントはありません(サービス自体はXMLのみを受信して​​出力し、複合型は出力しないため、強く型付けされた要求/応答クラスを自動的に生成することはできません)。
4

1 に答える 1

1

それは、XML-RPC 実装があなたの求めているもののように思えます。ウィキペディアから;

XML-RPC は、プロトコルを実装するサーバーに HTTP 要求を送信することによって機能します。その場合のクライアントは、通常、リモート システムの単一のメソッドを呼び出したいソフトウェアです。複数の入力パラメーターをリモート メソッドに渡すことができ、1 つの戻り値が返されます。パラメーターの型を使用すると、パラメーターをマップおよびリストにネストできるため、より大きな構造を転送できます。したがって、XML-RPC を使用して、オブジェクトまたは構造を入力パラメーターおよび出力パラメーターの両方として転送できます。

ウィキペディアには、このプロトコルのJava 実装もいくつかリストされています。

これを具体的に使用したことはありませんが、JSON-RPCの劣悪なバージョンを中心に設計されたサービスを使用しました。仕様に完全に準拠していないため、既存の実装を利用できませんでした。

個人的には、このようなプロトコルを使用する利点はわかりませんでした。サービスによって公開される操作の明確な定義と、必須パラメーターなどの関連する制約が必要だったからです。それに加えて、関連するオブジェクトモデルへのJSON(あなたの場合はXML)のシリアル化/逆シリアル化。これは主に、私たちがやり取りしていたベンダーと、仕様への準拠の欠如によるものでした. あなたの実装が準拠している場合、提供されている既存の実装がこれをうまく処理する方法を提供してくれるかもしれません。

ウィキペディアでも、XML-RPC の肥大化に関する批判に注意してください。代わりに、JSON-RPC を調べてみるとよいかもしれません。確かに、チェックアウトできるいくつかの実装がリストされています。

編集:あなたの質問を正しく読みませんでした。ごめん。サービスの提供を考えているようでした。XML-RPC/JSON-RPC に関するリンクを参照すると、テスト クライアントをノックアップする方法についてのアイデアが得られるかもしれません。.NET に関する限り、私はJayrockコードベースを調べて、JSON-RPC プロトコルがどのように実装されているか、そしてそれをシナリオで使用できたかどうかを理解しました。リクエストとレスポンスがどのように処理されるかについて、大まかなアイデアを得ることができます。メモリから、サービスの呼び出し方法を示すテスト ハーネスやサンプル コードを持っている場合もあります。それはあなたにいくつかのアイデアを与えるかもしれません。

于 2013-01-31T08:42:01.643 に答える