Web サービスをコーディングするとき、戻り値をどのように構造化しますか? エラー状態 (予期されるものと予期しないもの) をどのように処理しますか? int のような単純なものを返す場合、それを返すだけですか、それともより複雑なオブジェクトに埋め込んでいますか? 1 つのサービス内のすべての Web メソッドが 1 つのクラスのインスタンスを返しますか、それともメソッドごとにカスタムの戻り値クラスを作成しますか?
4 に答える
私は、単純なパブリック プロパティを持つ単一の [Operation]Request クラスに引数をカプセル化する Request/Response オブジェクト パターンが好きです。
AddCustomerResponse を返す AddCustomerRequest のようなもの。
応答には、操作の成功/失敗に関する情報、UI で使用される可能性のあるメッセージ、追加された顧客の ID などを含めることができます。
もう 1 つの適切なパターンは、これらすべてを単純な IMessage インターフェイスから派生させることです。ここで、一般的なエンドポイントは Process(params IMessage[] messages) のようなものです。このようにして、同じ Web 要求で複数の操作を渡すことができます。
ベンの答えは+1。
さらに、一般的な応答では複数のエラー/警告項目が許可され、可能な限り包括的で実用的な応答ができるようにすることを検討することをお勧めします。(最初のエラーメッセージの後で停止したコンパイラを使用しますか、それとも可能な限り通知するコンパイラを使用しますか?)
SOAP Webサービスを使用している場合、SOAP障害はエラーの詳細を返す標準的な方法であり、障害メッセージは必要な追加の詳細を返すことができます。
SOAP 障害は、呼び出し元のアプリケーションが SOAP クライアントである場合の標準的な方法です。XMLHTTP を使用する COM クライアントなど、Soap が XML として解析され、Soap の障害を簡単に処理できない場合があります。まだ投票できませんが、@Ben Scheirman の別の +1 です。