昨天晚上狐友会社群的深海蓝鲸问了一个BS的模式行为,为什么和CS不同。
码农小张刚好也看到了这个问题,说这还不容易,刚好小丽过来了,说:“小张你的快递。”,小张头也没抬,他竟然没有发现小丽今天的眼影换了颜色,杏眼在眼影的衬托下,越发地灵动起来,竟然似乎还有脉脉的情思。
见小张头也没有抬,于是把快递重重地扔在小张的办公桌上,竟没出一声,转身就走了,飘逸的长发一如既往的洒脱。
可我们的码农小张,还在跟蓝鲸讲,要想理解猫框BS的编程模式,只需要了解下面几点
1 BS模式是无状态,(每次来都是生人)
BS模式,就像门卫,他不管你来了几次,他不会记得你,他只管要你出示通行证,有通行证就放你进去。(TOKEN模式)
如果这个门卫不存在的话,你就可以大摇大摆进去,三教九流通行无阻。
2 BS模式是一问一答(前朝的尚方宝剑,斩不了本朝的官)
浏览器B输入网址,服务器S就根据收到的URL,提取信息返回。你问我就答,你不问我就不答。浏览器上做任何的操作,服务器S是不知道的。服务器做的任何操作,浏览器S也是不知道的,还因为BS是无状态,前一问,跟前天答有来往,跟后一答一点关系也没有。所以不要想着后一答想去取前一问提交的参数。前朝的尚方宝剑,斩不了本朝的官。
3 BS一问一答就是全生命周期(答完就释放掉所有打开的表,变量,资源)
服务器S接收到一问之后,就会从main 执行到 quit ,一路通到底,不能为UI元素,比如MESSAGEBOX,WAIT打断程序的执行。
每一次访问都是重新启动这个exe,三个访问就会启动三个exe ,执行完毕之后,全部释放。
浏览器也只会在服务器回答之后,发生状态的状态。像服务器调用httpsetcookie 函数,实际上服务器只是缓存了这个cookie,只有真正遇到controller 类(ctl)的return 才会跟着回答跑到浏览器上面去。
关于声明非可视类session,custom的区别
session 是私有工作期,其中打开的表,类释放的时候,也会释放掉。如果sessionA 调用 sessionB 的类,sessionA 打开的表是在sessionA的私有工作期中,sessionB打开的表是在sessionB两者是独立的,不可相互访问。
custom 是公共工作期,不会自动释放,且打开的表可以相互访问。
调试服务器模式下,虽然看起来像CS模式,请也要按以上的规范去做,忘记掉Public,即使你声明它,也会在一问一答结束之后,释放掉。