6

新しいバージョンのWCF Webサービスを作成しましたが、サービスとデータの契約に関して何も変更を加えていないことを確認したいと思います。WCFサービスの下位互換性チェック

VB6 Com Apiデベロッパーとしての思いを思い出して、コンパイル時にコンポーネントの以前のリリースバージョンを指定してコンパイラがバイナリ互換性が維持されていることを確認するのが簡単だったことを思い出してください。

私は、(うまくいけば) "契約の互換性"チェックと呼ばれるものを想定しています。 VB6 dev envと同様のチェックを行うためにメタデータを使用します。これは、ユーティリティを実行する別のビルドステップとして実行できます。

私はそこにそのような有用性が存在しないと受け入れる準備ができています。そうであれば、これを実現するためのアルゴリズムがどのように見えるか、誰にも分かりますか?

  1. 現在のライブサービスバージョン
  2. からメタデータを取得し、新たなサービスのバージョン
  3. の互換性のためのチェックサービスの契約および各Data契約からメタデータを取得します。重大な変更のみを報告する。 、それは複雑ですが、確かに自動化だろうよう

ステップ3はそのような

+2

互換性の問題がある場合は、サービスコントラクトのネームスペースを使用してバージョン管理を行い、古いバージョンがもう使用されていないことを確認するまで、両方のバージョンを使用できます。 –

答えて

1

何もアンディの存在しない...ようだが、あなたがアップ何かを取得し、実行している場合は、2つのDLL(古いものと新しいものを)持っていることにより、 BitDifferのようなものを使って比較することができます。

WCFリリースに役立つCodeplexに関するプロジェクトがありましたが、残念ながらそれが何であるか覚えていません。

幸運、

+0

また、ApiChange、LibCheckまたはNDependツールを使用して2つのDLLを比較しようとする場合があります。 – aponomarenko

4

これらの状況は、統合/回帰テストによって解決される-Keith。初期バージョンの統合テストを作成し、サービスを新しいバージョンに変更した後、古いクライアントを使用して統合テストを再実行します。彼らが成功すれば何も壊さなかった。彼らが失敗した場合は、何が原因で問題が発生したのか正確に分かります

+1

良い点。それはトリックを行うだろう。静的なチェックが不可能な場合は、実行時のチェックが一番良い方法です。ありがとう –

0

すると、古いインターフェース契約のため"Codeplex WCF Load Test"を使用してユニットテストを生成し、新しいものにそれらを実行してみてください:

このツールは、WCFトレースファイルとWCFクライアントプロキシ、またはWCFインターフェイス契約を取り、そして生成しますトレースファイルで検出された同じ一連の呼び出しを再生するC#単体テスト。ユニットテストを使用して、ターゲットのロードテストを行うことができます。