1

実行中のサービスからプログラムで契約を結ぶ方法はありますか?実行中のサービスのコントラクトを、クライアント側で参照されているコントラクトと比較したいと思います。

たとえば、実装が異なる異なるマシンで実行されているService1の2つのインスタンスがあります。どちらもIService1という名前のコントラクトがありますが、実装が異なります。IService1(First instance)への参照を持つConsole1があります。Console1には2つのエンドポイントアドレスのコレクションがあります。Console1は、実行中のサービスのどれが、彼が使用しているコントラクト(ファーストインスタンス)に対して正しいサービスであるかを確認したいと考えています。

ここで私がしたいのは、アドレスを使用してサービスからプログラムで契約を取得し、それを私が持っている参照された契約と比較することです。

4

1 に答える 1

1

サービスがメタデータを公開している場合は、可能です。使用するバインディングに正確に依存します。通常のhttpバインディングの場合は、http://myserver/myservice.svc?WSDLを使用できます。コントラクトを比較するには、通常のhttp APIを使用してWSDLをダウンロードしてから、保存されている参照WSDLと比較する必要があります。

比較を実装する前に考慮すべきことがいくつかあります。

  • コントラクトが一致しない場合、WCFはエラーをスローします。
  • 特定の名前空間で公開された特定のコントラクトは、異なるバージョンに存在してはなりません。これは、技術的な問題というよりも日常的な問題です。同じ契約が異なるサービスによって実装されているあなたのような場合、契約変更のための良いルーチンが必要です。
于 2010-04-03T08:31:42.270 に答える