Dorado 5 : 2.数据模型驱动 (WP)

广义的AJAX所包括的一套与AJAX通讯机制结合的Widget(UI组件),可以大致分为两个大类:离散控件集型和数据模型驱动型。
离散控件集型。此类UI组件以提供一系列相对独立的界面控件为主要目的。控件的类型很多,例如搭建Web应用常见的各种Grid、Tree、Menu、ToolBar、Window等。不过此类UI组件一般不会全面考虑界面中的数据和操作逻辑的封装,至多只会提供相对简单的静态数据绑定。此类产品的主要出发点是改善Web应用的界面表现能力,同时借助自带的SDK提供一种更加规范的开发模式。
数据模型驱动型。此类UI组件在提供一组功能强大的UI控件集的基础上,提供对界面中数据模型的管理功能,其UI组件以数据敏感控件为主。数据敏感控件可以通过于数据模型的绑定来实现对表现层中数据的展示和控制。这种数据绑定可成为动态数据绑定。此类UI组件的主要出发点除改善Web应用的界面表现能力之外,也非常注重提供一种快速开发的模式。

静态数据绑定是指在控件可以根据指派给他的数据源(往往是XML数据源或简单的数组)自动的提取并展示其中的数据。这种提取过程是主动完成的,当提取过程结束后控件无法继续感知数据源中数据的变化。这事实上是从控件到数据源的拉模式(Pull Mode)。
动态数据绑定是指将控件以观察者的角色注册到数据源(通常是经过封装的数据对象)中。数据源成为被观察者。当数据源中的数据或状态发生改变时会主动通知所有观察者(即绑定的控件),然后再由控件自动提取数据完成展现的更新。这样一旦绑定建立以后控件就可以实时的体现数据源中的最新变化。如果用户利用这些控件对数据或状态做了改变,那么这种改变自然也会通过数据源再实时的通知给所有其它相关的控件。这事实上是从数据源到控件的推模式(Push Mode)。

优秀的数据模型驱动型的开发框架应该首先包含离散控件集中的各种功能,此类开发框架事实上是相对于单纯的UI控件集而言更高层次的抽象。这种模式在C/S架构下非常常见,例如VB、Delphi等基于Windows操作系统的快速开发工具提交数据库应用开发模式都属于这种类型。在B/S架构下,此类开发框架则是填补了原先缺失的Web表现层架构空白。
DORADO采用数据模型驱动的实现方式,将数据与UI组件分离。Dataset用于分装展现层中的数据,Control用于封装各种界面元素和操作逻辑。Control主要用于与用户交互,而Dataset主要用于与后台数据、业务逻辑交互。

(图:Dataset与Control关系示意图)
用户修改表单中的某项数据,表格中该条记录的相同字段也随之改变,各种数据控件具有一致的行为表现这一现象可以说明,在这些数据控件的后面暗含这一个具有管理功能的对象。这个管理对象就是数据模型,用户完全通过各种数据感知控件来观察和操作数据模型中的数据。

(图:DORADO数据模型驱动的UI组件)