知识卡片
脚本与服务器页面:解释请求与格式化应答的分工
内容
构建Web服务器端应用主要有两种方式。脚本形式(如CGI脚本、Java servlet)本质是一个程序,通过检查HTTP请求对象获取数据(有的环境靠正则表达式解析请求字符串,正因如此Perl一度是CGI脚本的热门选择;有的平台如Java servlet则替开发者解析好数据,允许通过关键字接口取值),输出时再用write stream把响应字符串写出去——用流命令拼HTML响应,对程序员已经不太舒服,对非程序员几乎不可能,因此催生了服务器页面(PHP、ASP、JSP):把程序和要返回的文本页组合在一起,直接在HTML里编写页面、把脚本代码嵌进去在特定位置执行。两种方式各有所长:脚本方式非常适合解释请求消息(处理各种输入判断逻辑),服务器页面则适合格式化应答消息(当只需对响应做少量处理时效果很好,比如”给出1234号相册的详细内容”),但一旦需要根据输入做复杂判断,用服务器页面处理请求消息就容易变得混乱。因此推荐的分工原则是:用脚本语言解释请求消息,用服务器页面格式化应答消息——这个”请求处理”与”应答格式化”的分离思路并不新鲜,最早出现在采用模型-视图-控制器模式的用户界面里,是”把非表现层逻辑剥离出来”这条通用原则在Web场景下的具体化。
参考来源
- 位置:《企业应用架构模式》第一部分"表述"之"第4章 Web表现层"(源文件:_epub-src/OEBPS/Text/000027.html)
- 结论依据:原文说明"因为脚本方式非常适合于解释请求消息,服务器页面非常适合于格式化应答消息,所以,应该用脚本语言来解释请求消息,用服务器页面来格式化应答消息。这种用法的分离事实上是一个老观点,它首次出现在使用模型-视图-控制器模式的用户界面中",直接支撑本卡结论。
- 原始内容:因为脚本方式非常适合于解释请求消息,服务器页面非常适合于格式化应答消息,所以,应该用脚本语言来解释请求消息,用服务器页面来格式化应答消息。