技术开发 频道

ASP.NET Futures 的Ajax应用开发


2 使用ASP.NET Futures开发以客户端为中心的Ajax应用

    在使用ASP.NET Futures开发之前,我们首先要知道它是怎么工作的,以及它为我们提供了哪些基础部件以便于我们的开发。 

ASP.NET Futures提供的客户端模型

    首先,ASP.NET AJAX/Futures在客户端为我们提供了一种类似于服务器端的控件机制。你可以将一个<input type=”text” />初始化为一个Sys.UI.TextBox,然后它就如同服务器端的TextBox一样易于使用。

    然后,ASP.NET Futures还提供了一种叫做Behavior的东东。什么是Behavior呢?你可以简单地认为Behavior就是一组事件、方法与对象的集合,这个集合是基于交互逻辑而聚合的,而非基于对象性质。例如现在有一个TextBox,你希望在其中输入前几个字母之后,TextBox会弹出下拉框提供若干可能的输入选项给你选择,也就是我们通常所说的AutoComplete(自动完成)。那么在这里AutoComplete就可以是一个Behavior,它包括对TextBox输入事件的相应,包括显示下拉,可能好包括通过Web Service查询可提供的选项,这些逻辑原本的耦合度不高,不应该聚合成为Control,但是它们在一个特定的交互操作中聚合在一次,因此就应该将它们定义为一个Behavior。

    另外,ASP.NET Futures还提供了一种比Event更高层次的事件机制,称之为Action。我们现在能看到一些服务器端控件包含一些成对出现的数据操作时间,例如Updating/Updated、Inserting/Inserted、Deleting/Deleted,之所以要这样设计是为了向开发人员提供一个更灵活的接口,允许开发人员在特定的事件之前以及之后进行自己的逻辑调用。例如Update操作吧,其实这对于数据控件来说是一个事件,然而对外暴露则成了Updating/Updated两个事件,这就增加了事件的数量。Action的引入正是为了解决这个问题,在向一个Action添加事件处理函数时就可以声明这个函数是在Action前调用还是在Action后调用。有些Action是仅被执行一次的,只有已执行和未执行这两种状态,添加事件处理函数时可以声明如果Action被执行过了事件马上被触发。Action机制的引入都大大简化了复杂对象的事件模型。

     ASP.NET Futures值得一提的强大功能还有Binding。这名字听起来与服务器端的数据绑定有点关系,实际上也正是这样。    Binding可以绑定任意两个对象的属性(注意是ASP.NET AJAX/Futures引入的属性概念而不是成员变量),这种绑定可以单向的也可以是双向的,而且绑定支持Transform。什么是Transform呢?例如你提供一个下拉列表提供用户选择罗马数字的i、ii、iii、iv、v、vi……然后这个下拉选择的值要绑定到一个对象的属性上,该属性是一个Number,那么你就可以设计一个Transform将String的罗马数字和它实际代表的Number值对应起来,之后Binding就能自动完成这个绑定,无论何时你访问此对象属性,你得到的都是用户选择的罗马数字对应的数值。

    最后需要了解的是,ASP.NET Futures还引入了Drag and Drop与Animation的支持。前者为页面上的拖放操作提供了一个低层框架;后者类似于基于Prototype的Scriptaculous库的Effect,提供了丰富的HTML元素动画效果。
第1部分到这里就结束了,我们通过这部分内容了解了以客户端为中心的3种Ajax应用模型,知道了ASP.NET Futures为开发提供的底层框架。在之后的文章当中,我们将来探讨如何使用ASP.NET Futures进行实际的开发,并且看看它有多大的潜力以适应未来的Ajax网站发展趋势。
0
相关文章