|
作者: 李万宝
引言
本文我将介绍在三层Web体系开发中的两种数据绑定模式,然后在不超过你已经会用的控件知识的情况下,来介绍能够极大减少这种数据绑定模式的替代品--XLib库文件。具体的说,本文开始我们介绍在三层体系结构里常规的数据绑定方法,然后介绍XLib是如何提高这种绑定效率的。
1、数据绑定流程
在三层Web体系结构里,通常有四步来完成数据绑定任务:
1)从数据库里加载数据到业务逻辑对象
2)在Web窗体上放置Web控件并使用业务逻辑对象进行填充数据。
3)将Web控件的值拷贝到业务逻辑对象的属性里
4)保存业务逻辑对象的属性值到数据库。
以具体的Customer为例,在三层应用程序里最简单的数据绑定模式的步骤如下:
1)从数据库Customer表里加载合适的顾客记录
2)将顾客记录绑定到Customer业务对象上
3)将Customer业务对象绑定到Web控件上
4)用户在窗体里输入数据并单击Submit进行提交数据
5)将Web控件的更新事件绑定到Customer对象上
6)把Customer上的信息保存到表里
7)将表里的信息保存到Customer上
有多种方式执行这个流程,我概括起来有三种:
1、显示生成数据绑定方式--使用大家都熟悉的前台方式
2、Microsoft的方式--使用类型化的DataSet和FormView
3、
XLib方式--使用反射技术和其他的.NET特性来分析绑定--在运行时获取对象
1.2 代码--业务逻辑对象和Web
页面
为了具体说明这三种方式的使用方法,我将使用Customer类和EditCustomer页面作为演示。下面是一些代码,它将说明具体在什么地方进行数据绑定。
通常,Customer类看起来类似如下:
public class Customer { //list all properties //CRUD
methods public void Load() { //Binding #1 //Copy
database record values into properties } public void Save()
{ //Binding #4 //Copy properties values into database
record }
public void Delete() ; //Other methods specific
to customer public string
GetCustomerFullName().. } 编辑顾客页面的代码类似如下:
//页面的一些指令 //与Form窗体有关的一些顾客属性 //提交和取消按钮 编辑用户信息的后台代码类似如下:
public partial class EditCustomer { protected void
Page_Load(object sender, EventArgs e) { if
(!IsPostBack){ //Check if adding new customer or updating if
(_isUpdateMode) LoadData(); } }
protected void
btnSubmit_Click(object sender, EventArgs e) { if
(!Page.IsValid) return; SaveData();
//Go
Back }
private void LoadData() { Customer
customer=new
Customer(); customerID=_customerID; customer.Load();
//Binding
#2 //Copy customer properties into control
values }
private void SaveData() { Customer
customer=new Customer();
If
(_isUpdateMode) { customer.ID=_customerID; customer.Load(); }
//Binding
#3 //Copy control values into customer
properties customer.Save(); } }
|