带镣铐的舞者:从两方面看AJAX与B/S

豆豆网   技术应用频道   2007年08月16日  【字号: 收藏本文

内容摘要:近来遇到了这样的一个应用场景,某企业多年以来一直使用PowerBuilder开发的系统,随着公司的发展,决定将老的信息系统由C/S转为流行的B/S架构

  近来遇到了这样的一个应用场景,某企业多年以来一直使用PowerBuilder开发的系统,随着公司的发展,决定将老的信息系统由C/S转为流行的B/S架构,于是问题出现:原有系统有大量的数据录入、精确报表打印等功能,而且用户都已非常习惯这种操作,希望新系统能保留原有系统的这种使用方便的特性。

  我一听到这个问题就头痛了,PB有一大堆功能强大的控件,要搬到浏览器里,用网页来模拟实现,太困难了。

  1、B/S为何难于提供好的用户交互体验?

  这里头的最大问题有几个:

  (1)无状态的HTTP协议

  Windows窗体间可以通过内存直接交换信息,但作为B/S架构通讯基础协议的HTTP是无状态的。

  如果将浏览器看成是客人,Web Server看成是旅馆,在HTTP协议的管理之下,会出现这种情况:不管某客人来访多少次,Web Server都将其视为第一次的访客。这样一来,客人每次都得带齐身份证件供旅馆工作人员“验明正身”。

  HTTP协议的无状态,导致Web Server的“六亲不认”,这固然能增加Web Server的吞吐量,却给应用系统的开发带来了麻烦。因为应用系统中往往有许多业务处理流程,天生就是信息流转的,即原始数据从一端进去,从另一端出来时应该已经过某些处理,怎可想象整个业务流程中的信息会流失?于是,在HTTP各请求间共享信息就成了件麻烦事,这就是HTTP请求的“状态保持”问题。每个B/S系统都必须解决这个问题。微软想了一些“歪招”,比如充分利用HTML网页的中隐藏域,再在Web Server上做些手脚,于是ASP.NET拥有了一套在各个HTTP请求之间维持状态的技术:Session,Cookie,ViewState,Profile,Application。

  然而问题并没有完全解决。比如,C/S系统中常见的收集用户输入信息的对话框,主窗体与对话框之间有着信息的交换(又分为两种:模式的和非模式的,前者对话框不关掉,主窗体不能被激活),在B/S架构之下,由于浏览器的每个请求是独立的,要在两个独立的浏览器窗口间实现类似于模式对话框这种直接的信息交换,我还真不知道该怎样干。

来源:天极    作者:金旭亮    责编:豆豆技术应用

正在加载评论...