次のシナリオを検討してください。
WCF サービスをホストする Windows サービスがあります。
WCF サービスは、クライアントと、物理的に異なるマシンにある AppFabric サーバーとの間のインターフェイスを提供します。オブジェクトを取得し、計算を行い、最適なものを返します。
20 ~ 30 のクライアントが同時にサービスに接続できますが、それほど多くはありません。
サービスでクエリが実行されるたびにインスタンスを作成するか、クライアント オブジェクトをメンバーとして関数を呼び出します。インスタンスを作成すると、嫌いな try finally ブロックですべてが散らかりますが、クライアント接続はどうですか?欠点は何ですか? ホストを再起動しても、クライアントは引き続き機能しますか? これを行うための通常の/推奨される方法は何ですか?
try
{
PreOrderService.PreorderServiceClient proxy = new PreOrderService.PreorderServiceClient("netTcpPreorderService");
List<PreOrder> preOrders = proxy.FindWallet(preOrder.WalletId);
}
finally
{
if (proxy.State != CommunicationState.Faulted)
proxy.Close();
}