1.新的技术:如果Max想把他的站点连接到一个SQL数据库,他在Google查到了数百万的例子。AJAX技术,不管这种技术有多年轻,它 仍然是出现在采购循环中相对较早的,尽管它只有很少一部分好的例子出现在网络上。为了解决一些难处理的和不必要的复杂问题,这就要求像Max那样的开发者 去自主开发。Max也就不得不编写服务器端和客户端的代码,创建他自己不太确定的协议(特别是对服务器响应来讲)。不管这些协议有多好,都将会及时表现在 页面上。
2.非传统方式的设计:AJAX有一点点不同于传统设计方式,因为这样的应用程序是半客户端半服务端的。在Max的例子里,他是唯一的开发者, 所以他为服务端和客户端都能够进行编码。在同一时间使用两种不同的语言(特别是在早期阶段)进行开发将会产生一些初级的编码错误,因为他要在两端来回跳 跃,对一端来讲非常好,但可能在另一端不能够胜任。即使Max有一个大的开发团队,安全编码责任也可能在服务端和客户端开发小组之间代码移交的时候发生问 题。
3.太多的脚本语言:Max凭借他自己的聪明才智决定建立世界上最优秀的旅行登记工具。你从输入你现在的位置(通过邮政编码、电话区号或者 GPS等等)开始登记,这时候一个AJAX请求就会被立即发送来确定你确切的位置。从那时候开始,屏幕上就会填入你所有可以利用的旅行方式,这一切甚至都 是在你决定你想要去什么地方、你打算什么时候动身和你打算和谁一同去之前就完成的。
这个屏幕上的单元格和控件都充满了AJAX驱动,服务器端和客户端的脚本可能需要超过20个不同的服务器调用。你可以想像一个很小的个体服务器 程序,比如findairportsbylocation.aspx 或者 determinemaxbaggageallowancebyairline.php.
显而易见,如果没有Max的仔细计划(比如创建多功能的“重载”JavaScript函数和服务器脚本),每一次设计他都需要创建超过40个独 立的部分。更多的编程意味着会产生更多的错误和bug,意味着需要更多的时间去编写、管理、测试和更新代码。不仅如此,因为在客户端的 JavaScript代码中应用了大量的这种脚本,他们在正式的程序测试中也容易变得很健忘。
4.确定小部分的AJAX不会引起危害:这个站点是一个计划出行的站点,但是Max考虑的是它将立刻为你提供一个显示精确位置的卫星视图,并且 把你所要到达目的地的天气情况也提供给你。AJAX最大的诱惑之一看起来好像是直到最后一刻它还在进行其它的操作,就像一个讲解员在那里解说一样,为了 AJAX使用了AJAX。当Max开始尝试他的新想法时,他会逐渐尝试增加更多新的功能,完全忽视测试的需要。
5.不安全的通讯:每一个AJAX调用可能只回传很少数量的数据给客户端,但那些数据是私有的、保密的。Max可以编写一个便利的工具来对你的 信用卡号码进行数字校验,但是如果使用纯文本代替over SSL进行发送数据会怎样呢?这是一个显而易见的问题,但是当有许多例行程序需要考虑,特别是屏幕上其它99%的数据不是真正的机密数据时,很容易就会忽 视掉SSL的。