對服務器程序來講,有兩個基本假設十分重要,究竟服務器是基於狀態請求仍是無狀態請求。狀態化的判斷是指兩個來自相同發起者的請求在服務器端是否具有上下文關係。若是是狀態化請求,那麼服務器端通常都要保存請求的相關信息,每一個請求能夠默認地使用之前的請求信息。而無狀態請求則不行,服務器端所可以處理的過程,他的處理信息必須所有來自於請求所攜帶的信息以及其餘服務器端自身所保存的、而且能夠被全部請求所使用的公共信息。服務器
無狀態的服務器程序,最著名的就是WEB服務器。每次HTTP請求和之前都沒有啥關係,只是獲取目標URI。獲得目標內容以後,此次鏈接就被殺死,沒有任何痕跡。在後來的發展進程中,逐漸在無狀態化的過程當中,加入狀態化的信息,好比COOKIE。服務端在響應客戶端的請求的時候,會向客戶端推送一個COOKIE,這個COOKIE記錄服務端上面的一些信息。客戶端在後續的請求中,能夠攜帶這個COOKIE,服務端能夠根據這個COOKIE判斷這個請求的上下文關係。COOKIE的存在,是無狀態化向狀態化的一個過渡手段,他經過外部擴展手段,COOKIE來維護上下文關係。網絡
狀態化的服務器有更廣闊的應用範圍,好比MSN、網絡遊戲等服務器。他在服務端維護每一個鏈接的狀態信息,服務端在接收到每一個鏈接的發送的請求時,能夠從本地存儲的信息來重現上下文關係。這樣,客戶端能夠很容易使用缺省的信息,服務端也能夠很容易地進行狀態管理。好比說,當一個用戶登陸後,服務端能夠根據用戶名獲取他的生日等先前的註冊信息;並且在後續的處理中,服務端也很容易找到這個用戶的歷史信息。性能
狀態化服務器在功能實現方面具備更增強大的優點,但因爲他須要維護大量的信息和狀態,在性能方面要稍遜於無狀態服務器。無狀態服務器在處理簡單服務方面有優點,但複雜功能方面有不少弊端,好比,用無狀態服務器來實現即時通信服務器,將會是場惡夢。spa
轉自:http://blog.csdn.net/romandion/article/details/1800025.net