2011-07-07 12 views
1

2つのエンドポイントを公開するWCFサービスがあります。 1つはWebHttpBinding(モバイルクライアント用のRESTサービスとして機能する)とNetTcpBinding(デスクトップ.N​​ETクライアント用)の1つWCFサービスで、戻り値に応じてHttpStatusCodeを変更します。

サービスメソッドGetDataにクライアントがアクセスしたとします。データがない場合、私は 'ヌル'(または、何が呼び出されたかによってはfalseまたは'0 ')を返します。クライアントがWebHttpBinding -endpointにアクセスするモバイルクライアントの場合は、HttpStatusCodeをOK以外のものに変更したいと思います。

これを実行し、私のサービス実装を一般的に保つ方法はありますか(http固有のコードを入れないでください)? IDispatchMessageInspectorを使用してメッセージを傍受し、ステータスコードを変更することができ、WebHttpBindingエンドポイントでのみ行うことができますが、次にステータスコードを変更するものはわかりません。

Isどのように私がこれを解決することができるかについての提案を持っている人は誰ですか?

更新:

私は本当に私が実際に本当に際に間違ったサービスの実装であるものを知っている唯一の場所以来、良い方法でこれを行う方法はありませんことを考え始めています。

+0

私の意見では、HttpStatusCodeはHTTP送信のステータスのみを反映し、コンテンツは処理しません。 – Filburt

+0

ステータスコードを変更する時期を決定するルールはありますか?つまり、戻り値がnull/0/falseの場合、**常に**変更しますか?それとも、操作に依存するものなのでしょうか? – carlosfigueira

+0

@Filburt、私はあなたに同意していますが、移動クライアントを開発している人から、彼らが望んでいたデータを入手できなかった理由を知りたいという要求です。 – Joel

答えて

1

編集:良い方法:懸念の分離(SoC)。 RESTの実装では、RESTの問題がサービスに追加され、ビジネスロジック全体を実行する基本実装が継承されます。

+0

ありがとうございますが、私はすでにそれを認識しています。私の問題は、異なるエンドポイントで行われたコールを区別したいということです。呼び出しがRESTエンドポイントで行われた場合は、例外をスローしたいと思います(ステータスコードが設定されます)。他のエンドポイントでコールが行われた場合、例外をスローしたくない場合はnullを返してください。 – Joel

+0

RESTエンドポイントをサービスの特定のREST実装に設定できますか?実行時にエンドポイントタイプを決定するコードを要求していますか? – maxbeaudoin

+0

それは私が避けようとしていることです。私は別々の実装を望んでいませんが、私はそれについてもっと考えると、私はそれがこのように動作するようにする必要があると思います。 – Joel

関連する問題