2012-01-30 9 views
0

NetTcpBindingを使用してセッションフルサービスを作成しました。各クライアントはサービスとのセッションを開始するので、何らかの方法で各セッションを識別する必要があります。明らかにセッションが終了すると、その識別子も変更されて、アプリケーションがクライアントがおそらく変更されたことを理解できるようにする必要があります。接続を一意に識別する方法は?

WCFまたは一般的に.NETが、今説明した要件に基づいてさまざまなアクティブなセッションを一意に識別する方法を提供するかどうかはわかりません。

代わりに、私は、次のアイデアを考えた:だから、

public class ConnectionIdentifier { 
    public UInt16 ConnectionNumber {get; set;} 
    public Uint64 ConnectionTime {get; set;} 
} 

新しいセッションが確立されたとき、私はそれにセッション番号(すなわちConnectionNumber)を割り当て、セッションが開始された時間(すなわちConnectionTime = DateTime.Now.Ticks)。 しかし、この場合、セッションの終了を識別して対応する番号を解放するにはどうすればよいですか?

さらに、セッションを一意に識別する別の方法がありますか?

+1

[GUID](http://msdn.microsoft.com/en-us/library/system.guid.aspx)S。 (何らかの理由で組み込みのWCFセッションがあなたのユースケースに適さない場合) – millimoose

答えて

1

WCFには、このための機能が組み込まれています。これを行う方法は、サービス契約を「セッションごと」としてマークすることです。次に、各クライアント/セッションごとにサービスのインスタンスを取得します。

参照:http://msdn.microsoft.com/en-us/magazine/cc163590.aspx

+0

このようにして、特定のクライアント/セッションに対してコールバック関数を呼び出すことはできますか? – enzom83

関連する問題