关于.NET中所谓“异步刷新”问题的讨论

 
初次接触.NET环境下的网络编程,刚开始对他展现出来的页面无刷新异步提交数据所表现出来的形式很是吃了一惊。因为根据以前所接触的知识,尤其是当前很流行的AJAX技术其根本目的就是实现这样一个功能。这样开来,我们在AJAX环境中所作的大量实现,在.NET环境下其实是早已经实现了的而且是其最基本的功能?!!!
然而,耳边的新闻动态却又冲击着我的思维。一方面,暂且抛开技术层面的讨论,根据CSDN上的新闻得知,Microsoft迫于基于开源阵营的AJAX强大压力(注:“ajax是一种客户端方法,可以与J2EE、.NET、PHP、Ruby、和CGI脚本交互,而并不必关心服务器是什么。”“这种技术允许浏览器与服务器通信而无须刷新当前页面的技术都涵盖在内。”),已经在很久以前正式推出了功能相似的ATLATS。这样看来,.NET的实现原理和功能与AJAX相比都有很大的不同,或者说他们根本不是一个层面的东西,或许这里的讨论根本没有什么意义。
其次,另一方面,从源代码上分析,.NET还是基于页面表单<form>的提交,和普通的页面提交不同的是,其发送给客户的页面中都包括了类似于下面的代码:
<input type="hidden" name="__VIEWSTATE" value="dDwxMzM1OTU1OTAxO3Q8O2w8aTwxPjs+O2w8dDw7bDxpPDk+Oz47bDx0PDtsPGk8MD47aTwxPjtpPDI+Oz47bDx0PDtsPGk8MT47PjtsPHQ8O2w8aTwxPjs+O2w8dDxwPHA8bDxUZXh0Oz47bDwxOz4+Oz47Oz47Pj47Pj47dDw7bDxpPDE+Oz47bDx0PDtsPGk8MT47PjtsPHQ8cDxwPGw8VGV4dDs+O2w8MTs+Pjs+Ozs+Oz4+Oz4+O3Q8O2w8aTwxPjs+O2w8dDw7bDxpPDE+Oz47bDx0PHA8cDxsPFRleHQ7PjtsPDE7Pj47Pjs7Pjs+Pjs+Pjs+Pjs+Pjs+Pjs+1IZR891PbdNuNNMZEQ+tA3y/ryw=" />
推测其功能应该是设置隐藏域用于保存页面状态信息。然而这段信息是从何而来?根据页面流程提交可以推测,当前页在提交本页信息的同时也保存了当前页面的状态,而此段代码应该是在stadio的编程环境下自动生成的,也由此推断.NET的编程只能在stadio的环境下才可行,而不可以像其他语言一样用记事本就可以完全搞定。
然后我们通过具体程序的运行来验证其刷新的可靠性(现仅举我们当前正在学到的课本上面的例子,十二章练习五)。在前一页中填入相应的信息,然后提交至下一页,在这个页面中“display all“显示相应信息。重点就着这里了,在此可以完全判断其页面是通过:提交、回填同时刷新整个页面来实现其功能的。证据如下:
一、 ”display all“时,仔细观察,通过肉眼可以看到其状态栏上会显示出一段URL,这表明整个页面已经经过了重新载入;
二、通过修改相应的代码,在第二个页面中修改左边文本框的值,然后”display all”可以看到左边文本框中的值重新恢复成为第一次载入时的值,这表明整个页面经过了重新载入,同时回填相应的数据;(此方法需进一步验证。。。。。)
三、页面中相似功能的推断,在同一个页面还有一个”find“,点击后可以发现所有数据项都已改变,页面显示的效果和原来并无二致,同时通过观察其后台代码可以看出其结构完全一样,也就是说它们实现的功能是完全一样的,据此,”display all“显示的是全页面刷新。
以上三个证据均可独立证明整个页面刷新的事实。至此已经可以完全肯定其实现的是刷新整个页面,同时.NET也无相应功能来实现异步刷新。
行文此处,思路开始对整个思考的过程作一个简单的回顾后,发现这样的考虑其实有点多余。《Ajax基础教程》中提到“Ajax是一种客户端方法,可以与J2EE、.NET、PHP、Ruby、和CGI脚本交互,而并不必关心服务器是什么。”“这种技术允许浏览器与服务器通信而无须刷新当前页面的技术都涵盖在内。”很明显,异步提交只是一种客户端技术,任何服务器端脚本语言不作任何特殊的处理是不可能实现这样的功能的。
以下附上Ajax交互的方法,它与标准Web客户中所用的标准请求/向应方法有所差别:
1.       一个客户端触发一个Ajax事件。
2.       创建XMLHeepRequest对象的一个实例。
3.       向服务器端做出响应。
4.       服务器可以做你想做的事情。
5.       请求返回到浏览器。
6.       XMLHeepRequest处理返回值,调用相应的函数进行显示。
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值