會話:就是客戶端和服務端之間的談話。比喻A和B去登陸網站,那么A用戶登陸進去肯定顯示A的用戶詳情,那么這就是A和服務器之間的交流。同樣B用戶登陸之后顯示B的詳情,這就表示這是B和服務器之間的交流。
如果A會話結束那么服務器就會忘記A用戶的請求,也就看不到A的信息。WCF會話有三種模式下面我用圖表示
1:建立會話應具備的條件
A:需要支持會話的綁定(basicHttpBinding不支持會話綁定,所以建立會話那么這個綁定必須要支持會話。而wsHttpBinding和NetTcpBinding支持會話)
B:讓服務協定支持會話(主要是通過契約定義告知客戶端,服務端是支持會話的)
2:代碼進行演示
服務端:
1 [ServiceContract(sessionMode = SessionMode.NotAllowed)]2 public interface ISessionService3 {4 [OperationContract(IsOneWay = true)]5 void Login(string Name);6 }
客戶端進行引用:
ServiceClient.SessionServiceClient SSC = new ServiceClient.SessionServiceClient(); Console.Write("輸入用戶名:"); string Name = Console.ReadLine(); SSC.Login(Name); while (true) { Console.ReadKey(); SSC.Login(Console.ReadLine()); }
我們看運行結果
產生的會話ID為空 說明此時是不支持會話的
現在我們把NotAllowed改為Allowed
同一個客戶端進行請求
不同客戶端進行請求
從中可以看出通過會話服務器是可以記住客戶端的信息。
新聞熱點
疑難解答