打印本文 打印本文 关闭窗口 关闭窗口
ASP.NET入门随想之明明白白我的心
作者:武汉SEO闵涛  文章来源:敏韬网  点击数546  更新时间:2009/4/23 10:34:50  文章录入:mintao  责任编辑:mintao
  有一群说着同样语言的人,计划修一座高耸入云的高塔直达天庭,以证明族群团结的力量,塔很快就初具规模。这下可惊动天庭的神,他想这人和神都成邻居了,还怎么去统治人类?于是便施魔法扰乱人们的语言,使他们无法沟通,于是高塔再也无法继续修建。

  ■ 明明白白我的心 - 人机交互(Human-Computer Interaction)

  博客园里有一篇《给妈妈写程序》感人肺腑,说的是作者常常为了指导50出头的妈妈完成COPY之类的操作耗尽心思,最后为其定做一个只需点击两下的程序,由此推出UI设计的重要性。诚然,就用户而言软件等于N个用户界面。他们中的大多数压根不关心里头有多少令开发者陶醉的所谓高级技术,简单、快捷、美观是他们要求的全部。人机交互的研究领域就在捣腾这些看似琐碎的东西。


  在系统设计中,需要划分自动化系统边界,即把系统划分成手工操作和系统自动两个部份,两者通过用户界面(User Interface)完成对接,如图8-1。用户界面完成系统的输入输出工作:收集用户触发事件及相关数据,传递给系统内部进行处理并接收处理结果,可视化处理结果。在企业级的c/s应用中,aspx及其后台编码文件功能单纯得只剩下一个--完成人机交互。一个漂亮的网页不是用户界面设计的全部内涵,它更应该象一位面容姣好、语音甜美的接待者,轻声细语地询问用户需求,聆听用户杂乱无章的诉说,耐心指导用户完成操作流程,宽容用户错误,准确为用户送上最终结果--"您的账户里只剩0.4元,无法完成支付操作。"总之一句话,要充分认识和领会白居易同志写诗的伟大精神,让50出头的妈妈愉快地完成人机交互。

  ■ 人动则影动 - ASP.NET的静态模型

  在ASP.NET架构中,服务器端的ASP.NET页面对应客户端的HTML页面,包含一个交互Web Form,继承于FrameWork的Page类。ASPX文件是人,HTML编码临时文件是影,人动则影动,两者合成完整意义上的用户界面。用户对影进行各种操作,系统通过人进行相应处理,"request-response"回馈机制完成两者的映像过程,如图8-2。


  HTTP是一个无状态协议,所以WEB服务器是位打个磕睡就忘事的先生,当响应发送后将丢弃所有请求信息。这事必会影响应用程序的可用性,如因为数据验证错误而要求用户重新输入几十个输入框的所有信息,连妈妈的指头都会发出抗议的声音。为了弥补这个缺陷,ASP.NET使用视图状态(ViewState)来完成状态保持。原理很简单,服务器将每次HTTP请求中的页面数据写入生成的HTML文件中,下次页面提交时一并带上,如下例。在ASP时代我们曾用<input type="hidden">手工实现,而在.Net中您会发现HTML源代码会自动产生一个 _VIEWSTATE标签,其值即为系统保存的页面数据。

<%@ Page Language="C#" %>
<script runat="server">
protected override void OnLoad(EventArgs e){
int val = int.Parse(_sum.InnerText);
_sum.InnerText = (val+1).ToString();
base.OnLoad(e);
}
</script>
<html><body><form runat="server">
<span id="_sum" runat="server">0</span>
<input type="submit" />
</form></body></html>
  ViewState减少了不少麻烦,但也存在问题。在默认情况下它将被启用,即使没有任何用处也去收集所有页面信息并穿梭往返于C/S两端,其用base 64编码的庞大身躯常吞噬大量带宽,并存在被胁持的可能而引起系统安全性问题。 15e

打印本文 打印本文 关闭窗口 关闭窗口