【C#】【WCF】WCF ~ タイムアウト / Timeout ~

■ Timeoutについて

 * クライアントのタイムアウトが app.configファイルのバインディングの
   以下のパラメータで、設定することは可能。

■ TBindingクラス

OpenTimeoutプロパティ

   => サービスとの接続の確立を待機する時間間隔
http://msdn.microsoft.com/ja-jp/library/system.servicemodel.channels.binding.opentimeout.aspx

CloseTimeoutプロパティ

   => サービス終了を待機する時間間隔
http://msdn.microsoft.com/ja-jp/library/system.servicemodel.channels.binding.closetimeout.aspx

SendTimeoutプロパティ

   => クライアントへのメッセージ送信でタイムアウトするまでの時間
http://msdn.microsoft.com/ja-jp/library/system.servicemodel.channels.binding.sendtimeout.aspx

ReceiveTimeoutプロパティ

   => クライアントからのメッセージ受信でタイムアウトするまでの時間
http://msdn.microsoft.com/ja-jp/library/system.servicemodel.channels.binding.receivetimeout.aspx

■ ReliableSessionクラス

InactivityTimeoutプロパティ

   => 他の通信相手がチャネルにメッセージを送信せずにいられる最長期間
   (アクティブでないセッションを維持する最長期間)
http://msdn.microsoft.com/ja-jp/library/system.servicemodel.reliablesession.inactivitytimeout.aspx
 * クライアントが適切に終了できないか、通信に問題がある場合、セッション・タイムアウトする期間
 * 既定は、 10 分
http://msdn.microsoft.com/ja-jp/magazine/ee309491.aspx
サンプル
<netTcpBinding>
    <binding name="TCPSession">
        <reliableSession ordered="true" inactivityTimeout="00:25:00" enabled="false" />
    </binding>
</netTcpBinding>
http://msdn.microsoft.com/ja-jp/subscriptions/ms731375
利点
http://msdn.microsoft.com/ja-jp/library/system.servicemodel.reliablesession.inactivitytimeout.aspx
より抜粋

このタイムアウトを設定すると、クライアントがセキュリティ セッションを閉じない場合に
サーバーがそのセッションを保持することを回避できます。
セキュリティ セッションが、非アクティブ時間の間にメッセージを受信しなかった場合、
そのセッションは、サーバーによって閉じられます。
これにより、潜在的なサービス拒否攻撃が軽減されます。

■ ServiceBehaviorAttributeクラス

TransactionTimeoutプロパティ

   => トランザクションを完了する必要のある制限時間
http://msdn.microsoft.com/ja-jp/library/system.servicemodel.servicebehaviorattribute.transactiontimeout.aspx
サンプル
[ServiceBehavior(TransactionTimeout = "00:00:45")]
public class SampleService : ISample
{
}
http://msdn.microsoft.com/ja-jp/library/ms730232.aspx