对服务器程序来讲,有两个基本假设十分重要,究竟服务器是基于状态请求仍是无状态请求。状态化的判断是指两个来自相同发起者的请求在服务器端是否具有上下文关系。若是是状态化请求,那么服务器端通常都要保存请求的相关信息,每一个请求能够默认地使用之前的请求信息。而无状态请求则不行,服务器端所可以处理的过程,他的处理信息必须所有来自于请求所携带的信息以及其余服务器端自身所保存的、而且能够被全部请求所使用的公共信息。服务器
无状态的服务器程序,最著名的就是WEB服务器。每次HTTP请求和之前都没有啥关系,只是获取目标URI。获得目标内容以后,此次链接就被杀死,没有任何痕迹。在后来的发展进程中,逐渐在无状态化的过程当中,加入状态化的信息,好比COOKIE。服务端在响应客户端的请求的时候,会向客户端推送一个COOKIE,这个COOKIE记录服务端上面的一些信息。客户端在后续的请求中,能够携带这个COOKIE,服务端能够根据这个COOKIE判断这个请求的上下文关系。COOKIE的存在,是无状态化向状态化的一个过渡手段,他经过外部扩展手段,COOKIE来维护上下文关系。网络
状态化的服务器有更广阔的应用范围,好比MSN、网络游戏等服务器。他在服务端维护每一个链接的状态信息,服务端在接收到每一个链接的发送的请求时,能够从本地存储的信息来重现上下文关系。这样,客户端能够很容易使用缺省的信息,服务端也能够很容易地进行状态管理。好比说,当一个用户登陆后,服务端能够根据用户名获取他的生日等先前的注册信息;并且在后续的处理中,服务端也很容易找到这个用户的历史信息。性能
状态化服务器在功能实现方面具备更增强大的优点,但因为他须要维护大量的信息和状态,在性能方面要稍逊于无状态服务器。无状态服务器在处理简单服务方面有优点,但复杂功能方面有不少弊端,好比,用无状态服务器来实现即时通信服务器,将会是场恶梦。spa
转自:http://blog.csdn.net/romandion/article/details/1800025.net