Web天生是无状态的,也就是说处理新的一次请求时,在其请求完成后,服务器端都会删除这个请求的相关信息,在下一次请求到来时,服务器完全不知道上一次响应时的情况。但是有时我们需要Web请求完成后,还要继续保持原来的信息。
在OperaMasks里是通过自动维护视图状态(ViewState)来解决这个问题。视图状态以一棵树的形式来维护,一般称为“视图树”,其实是页面构件的构件树模型。
在首次请求的生命周期的恢复视图树阶段,OperaMasks引擎会根据页面代码生成一棵视图树;在每个生命周期的渲染响应阶段,OperaMasks引擎负面将当前视图状态保存起来;在非首次请求的生命周期的恢复视图树阶段,OperaMasks引擎会从客户端或服务器端的上次保存的视图状态找寻数据以恢复每个构件的状态并重建构件树。这样就解决了无状态的Http协议下状态保存问题。
在渲染视图时,OperaMasks引擎也是根据这个视图树来进行渲染的,因而由于视图状态的不同,同一页面在不同的请求下可能会渲染成不同的效果。