wcf中的数据报信道与会话信道

时间:2022-11-15 19:49:09

理解数据报信道和会话信道,就得了解会话的含义。wcf中的会话指通信参与者之间共享的上下文,也就是客户端和服务端之间共享的一些状态信息。换句话说,服务端具有某种能力,能够区分不同的客户端,并为不同的客户端保持状态。延伸到会话信道,一个会话信道将与一个客户端进行绑定,只能为一个客户端进行服务。但是数据报信道却没有这个限制,因为数据报信道不需要在客户端和服务端之间保持状态,这样的话不同的客户端可以共享相同的信道和服务端进行通信。
服务寄宿时,会创建若干个终结点,还可以为终结点指定监听地址,没有显式指定监听地址的终结点,会使用逻辑地址作为监听地址。对于每一个不同的监听地址,wcf都会创建一个信道监听器。基于数据报信道的监听中,监听开始的同时,监听信道就会被创建出来,一旦监听到消息请求,不管请求来自于哪个客户端,信道监听器都会使用创建好的信道对请求消息进行接收和处理。而在基于会话信道的监听中,监听开始时并不会创建监听信道,而是在成功监听到请求时,才会创建与客户端相对应的会话信道,每一个客户端独占地使用一个服务端信道。对于某个客户端的第一次请求,wcf会创建信道接收和处理请求,后续的来自于这个客户端的请求将使用同一个信道进行处理。因为不同的客户端使用不同的会话信道,所以服务端必须限制会话信道的数量,避免服务端资源的过度使用,导致后续的请求无法处理。所以wcf具有最大并发会话数量的限制。
在使用会话信道时,客户端在服务调用后需要及时关闭会话信道,以免影响其他客户端的正常使用。