你可能会发现关于代码项目的文章对这个问题很有用这里
会话对我们所有人来说是一个很好理解的术语,并且根据我们的共同理解,它是(嗯,更少或更多)实体相互识别的一段时间。我们中的一些人可能也在 ASP.NET 中使用过它。这个概念在 WCF 中几乎相似,尽管技术和用法有些不同。
在 WCF 中,总是有一个服务类实例来处理传入的服务请求。这些实例可能已经存在(当请求到达时在服务器上)或者可以根据需要创建。在 WCF 中,会话的概念主要是管理这些服务实例,以便以优化的方式利用服务器。在服务器上,有一个名为 InstanceContext 的特殊类,它创建/加载服务类实例并将请求分派给它。相关性可以理解为:
你可以在这里看到事情是如何参与的。当一些请求到达时,它通过实例上下文被路由到服务实例。假设有一千个请求,那么服务将不得不创建一千个实例上下文(这反过来又会创建一千个服务实例)来处理这些请求。如果以这种方式处理请求,则服务称为 PERCALL 服务,因为每个请求都由新的实例上下文和服务实例对象提供服务(以后将它们称为服务对象)。假设有一个客户端发出了 100 个请求。如果服务识别此客户端并始终通过专用服务对象为其提供服务,则此类服务将被称为 PERSESSION 服务,因为它识别客户端并通过服务对象的单个实例为其提供服务。另一方面,如果所有请求(无论客户端如何)都由服务对象的单个实例提供服务,则该服务将被称为 SINGLETON 服务。下面的图片总结了这个概念:上面的链接会有更多的信息。