障害・復旧シナリオを考えよう。あなたが必要とするサービスをホストしているマシンが、クラッシュするか使用不可能になるとする。ホットフェイルオーバーが利用できるとしても、それには大抵、更新されたDNSエントリの発信か、あらかじめ構成されたロードバランサが必要だ。しかし、もしその必要がなかったらどうだろう?クライアントアプリケーションが「IFooコントラクトをサポートしているのは誰?」と尋ねるだけで、自動的にアドレスとバインディング情報を解決することができたら?
WCF 4.0のダイナミックエンドポイントディスカバリ機能によってそれが可能になるのだ。この機能はWS-Discovery標準にもとづいており、サービスは"udpDiscoveryEndpoint"を使って自身の存在を発信することができる。アプリケーションはDiscoveryClient APIを使用して、指定されたコントラクトを実装しているサービスを探し出すことができる。
アドレスが見つかっても、サービスを呼び出すためにはさらにバインディング情報が必要だ。これはWCFが初期の頃から持っていたMetadataResolver APIで取得できる。エンドポイントディスカバリと同様、これはWebサービス標準、具体的にはWS-MetadataExchangeにもとづいている。
これをもとに構築したのがAnnouncementServiceだ。これは、サービスがオンラインに、もしくはオフラインになったことをクライアントに通知する。ダイナミックディスカバリと組み合わせることによって、洗練されたロードバランシングとフェイルオーバーを作り上げることができる。