2012-01-30 53 views
0

我使用NetTcpBinding创建了一个会话服务:每个客户端开始与服务的会话,所以我需要以某种方式识别每个会话。显然,当一个会话结束时,其标识符也应该改变,以便应用程序可以理解客户端可能已经改变。如何唯一标识连接?

我不知道WCF或者一般情况下.NET是否提供了一种基于我刚刚描述的要求唯一标识各种活动会话的方法。

或者我想到了以下思路:(即ConnectionNumber

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

因此,建立一个新的会话的时候,我给你一个会话数它和当时的会议开始时(即ConnectionTime = DateTime.Now.Ticks)。 但是,在这种情况下,如何识别会话结束以释放相应的号码?

此外,是否有其他方法来唯一标识会话?

+1

[GUID](http://msdn.microsoft.com/en-us/library/system.guid.aspx)秒。 (如果由于某种原因内置WCF会话不适合您的使用情况。) – millimoose 2012-01-30 14:55:31

回答

1

WCF为此已内置功能。做到这一点的方法是将您的服务合同标记为“每次会话”,然后为每个客户端/会话获取您的服务实例。

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

+0

这样,我可以为特定的客户端/会话调用回调函数吗? – enzom83 2012-01-30 15:20:02