私の職場では、時間と出席の設定をアップグレードしているところです。現在、従業員がチェックインとチェックアウトに使用する物理端末があります。これらの端末は、Webサービス呼び出しを介してサードパーティのT&Aシステムと通信します。
T&A Webサービスについて:
- IIS6でホスト
- 通信はHTTPを介したWCFとの通信です
- 公開されているメソッドの1つだけに関心があります( Beep()と呼びましょう)
私は何をする必要がありますか:
- 元のT&Aシステムはそのままにしておきます
- Beep()の呼び出しにも反応するカスタムサービスを作成します
したがって、基本的に、 Beep()のすべての呼び出しに便乗する必要がありますが、最善のアプローチが何であるかはわかりません。
すでに考慮されていること:
- T&Aサービスとまったく同じコントラクトを実装するカスタムWebサービスを作成し、すべての端末をそのカスタムサービスに転送します。その後、カスタムサービスから元のT&Aサービスを呼び出したり、必要な他のロジックを適用したりできるという考えです。
- これは私には過度に侵襲的であり、不必要に危険であるように思われます。元のシステムはできるだけ変更しないでおきます。
- 元のT&Aサービスへの呼び出しをインターセプトするカスタムHTTPハンドラーを作成します。
- 実際にはすでにこのようなことを社内で行っていますが、実装では元のHttpRequestを取得し、コンテンツを抽出してカスタムサービスを呼び出し、最後に元のリクエストに基づいて新しいHttpRequestを作成し、元のWebサービスがBeep( )が作られています。
- このアプローチについて私が気に入らないのは、元のHttpRequestが失われることです。はい、2番目の、おそらく同一のリクエストが作成されますが、これが安全であることを保証するためのHttpRequestsについては十分にわかりません。
私はオプション2を好みますが、それでも完璧ではありません。理想的には、元のHttpRequestを破棄する必要はありません。これが可能かどうか誰かが知っていますか?
そうでない場合、誰かがこれを行う別の方法を提案できますか?IISは、2つの宛先に要求をフォークするように構成できますか?
ありがとう
更新#1
私は解決策を見つけました(ここに文書化されています)が、私はまだ他のオプションを開いています。
更新#2
私はflupの解決策(そして正当化)が好きです。彼は賞金を受け取ります:)ありがとうflup!