虽然 ASP.NET AJAX v1.0 Beta 与 Atlas 发生了较大的变化,Atlas 这一概念也不复存在,但为了对 Ajax 技术进行初步了解,并出于对 DFlying 同志的仰慕,还是买了这本 Foundation of Atlas。书很薄,花了几天时间就全部看完,先不说技术内容是否详尽或出色,只就本书译者谈点想法。首先,文字翻译的非常到位,语句也较为通俗易懂(比较适合我这样的菜鸟),其次,译者对原文进行了更多的标注或解释,不仅没有破坏原文作者的整体风格,而且更显出译者对该项技术理解的深入,的确是 right person for translating this book。
再来看看内容,这里对书中的内容从我个人角度做个综述。Ajax 无非是利用客户端的 JavaScript 脚本完成更多原先需要提交到服务器进行的内容交互,而 Atlas 是在 Ajax 基础上提供了更加丰富的功能,能够较快地将传统的 ASP.NET 应用快速进行 Ajax 化,从而提升应用系统的可用性。Atlas 分为客户端控件和服务器端控件,客户端控件由若干 JavaScript 脚本组成,而服务器端则由若干支持页面局部更新的控件组成,双方相互配合共同完成页面的无闪烁刷新。
(一)客户端控件
1。客户端控件有两种体现或书写形式,一是直接利用 JavaScript 脚本,申明页面中的各种控件,如 var btn = new Sys.UI.Button($('Button1')); 随后进行控件的初始化(initialize),设置控件的各类属性和动作。二是通过 Atlas XML 脚本进行声明式的编程,这种方法是绝大部分开发人员喜欢的方法,也是我们以后使用 Atlas 的主要方式。
2。客户端控件几乎涵盖了所有的控件,特别是能够对<div><span>这些页面元素通过<control>控件进行很好的控制,<control>控件也是其他所有控件的基础,其他控件还包括<label><button><inputControl><textBox><image><hyperLink><checkBox><select>等。
3。每个客户端控件都有多个属性进行配置,我们可以通过 get_xxx 和 set_xxx 方法来获取和改变各个属性值。其中 cssClass 有若干方法可以使用,这个功能主要是支持各种通过 CSS 样式来改变页面的显示风格。部分控件具有 click 属性,可以设定 invokeMethod 方法和输入的参数。select 控件还可以通过 data 属性与具体的数据进行联系。
4。每个客户端都可以进行数据源的绑定,使用<binding>属性进行控制,dataContext 设定绑定的对象,dataPath 设定绑定对象的属性,property 设定被绑定对象的属性,transform 设定属性的转换,direction 设定绑定的方向。使用这样的绑定可以使页面的控件无需刷新就可以与其他控件进行关联,一方属性发生变化时将促发另一方属性的变化,该变化可能是单向的,也可能是双向的。数据绑定是 Atlas 的最大特色。
5。此外控件还具有验证基本输入、验证输入范围、鼠标的 click 行为、鼠标的 Hover 行为、鼠标的 Popup 行为、DragDrop 行为、各类 Animation 行为等。这些行为使得页面内容变得非常得丰富,大大增加了用户的体验感。
6。<virtualEarthMap>是个非常特殊的控件,可以动态地显示全球各地的地图,指定显示的经纬度,缩放度,移动位置,选择地图类型,使用图钉来标记地图上的特定位置,当然这个控件需要连接到微软的虚拟地球网站上方可进行。googleEarth估计也是采用这样的技术,地图浏览也是 Ajax 的一个最主要的应用。
(二)服务器端控件
1。服务器端控件主要是指 ScriptManager 和 UpdatePanel 控件,ScriptManager 是每个 Atlas 页面必须要有内容,且只能有一个,当使用模板页面时可以使用 ScriptManagerProxy 控件。ScriptManager 控件还可以指定发生错误时定义的页面。
2。ScriptManager 控件中可以指定<Scripts>属性,指定在页面加载时需要加入的额外的 JavaScript 脚本,该脚本可以是 Atlas 提供的一些额外的脚本,如 AtlasDragDrop、AtlasGlitz 属性等。从而可以使用这些脚本中的额外功能。
3。ScriptManager 控件中可以指定<Services> 属性,指定在页面加载时需要使用的 Web Service 服务,这样在页面中我们就可以直接使用 Web Service 中的方法进行远程调用,无需使用通常的 Web Service 代理来解析 WSDL 文件。
4。UpdatePanel 控制指定了页面中可以以异步方式进行更新的部分,所有需要局部更新的内容都需要放在 UpdatePanel 中,并可以为 UpdatePanel 指定触发器,当其模式化特征属性设定为 Conditional 时,只有在<Trigger>中指定的触发器方能更新该 UpdataPanel 中的更新。触发器包括<ControlEventTrigger>和<ControlValueTrigger>两种。
5。还有很多其他的服务器端控件可以使用,UpdataProcess 控件定义了 UpdatePanel 控件更新时显示的内容,AutoCompleteExtender 为客户端控件提供了自动完成功能,DragOverlayExtender 是服务器端自由拖放控件,ProfileScriptService 提供了一个可以跨 Session 的 Profile 属性, Timer 控件可以使特定的操作每隔一段时间来执行。Gadget 控件还不太熟悉,还需要继续学习。
Atlas 已成为过去,从今天开始要对 ASP.NET Ajax 进行系统的学习,希望能够通过一定时间的积累对 Ajax 能够进行深入理解,并对在今后项目中有所应用。最后,再次感谢 DFlying 为我带来了这本优秀的 Foundations of Atlas。
转载于:https://www.cnblogs.com/yuanxz/archive/2006/11/12/558216.html