知识大全 三层Web体系结构里的两种数据绑定模式
Posted 知
篇首语:不登高山,不知天之高也;不临深溪,不知地之厚也。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 三层Web体系结构里的两种数据绑定模式相关的知识,希望对你有一定的参考价值。
三层Web体系结构里的两种数据绑定模式 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
引言 本文我将介绍在三层Web体系开发中的两种数据绑定模式 然后在不超过你已经会用的控件知识的情况下 来介绍能够极大减少这种数据绑定模式的替代品--XLib库文件 具体的说 本文开始我们介绍在三层体系结构里常规的数据绑定方法 然后介绍XLib是如何提高这种绑定效率的 数据绑定流程 在三层Web体系结构里 通常有四步来完成数据绑定任务 )从数据库里加载数据到业务逻辑对象 )在Web窗体上放置Web控件并使用业务逻辑对象进行填充数据 )将Web控件的值拷贝到业务逻辑对象的属性里 )保存业务逻辑对象的属性值到数据库 以具体的Customer为例 在三层应用程序里最简单的数据绑定模式的步骤如下 )从数据库Customer表里加载合适的顾客记录 )将顾客记录绑定到Customer业务对象上 )将Customer业务对象绑定到Web控件上 )用户在窗体里输入数据并单击Submit进行提交数据 )将Web控件的更新事件绑定到Customer对象上 )把Customer上的信息保存到表里 )将表里的信息保存到Customer上 有多种方式执行这个流程 我概括起来有三种 显示生成数据绑定方式--使用大家都熟悉的前台方式 Microsoft的方式--使用类型化的DataSet和FormView XLib方式--使用反射技术和其他的 NET特性来分析绑定--在运行时获取对象 代码--业务逻辑对象和Web 页面 为了具体说明这三种方式的使用方法 我将使用Customer类和EditCustomer页面作为演示 下面是一些代码 它将说明具体在什么地方进行数据绑定 通常 Customer类看起来类似如下
public class Customer //list all properties //CRUD methods public void Load() //Binding # //Copy database record values into properties public void Save() //Binding # //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 # //Copy customer properties into control values private void SaveData() Customer customer=new Customer(); If (_isUpdateMode) customer ID=_customerID; customer Load(); //Binding # //Copy control values into customer properties customer Save();
三种数据绑定方式 方法 显式声明数据绑定方式 编辑顾客信息的方法之一是显式的数据绑定方式 这意味这对于每一个数据绑定都需要执行前面说的四个步骤 例如对于Customer的Load方法 可能的代码类似如下
public void Load() … //Load customer record using data reader _firstName=(string)dataReader[ FirstName ]; _lastName=(string)dataReader[ LastName ]; …
在这种情况下 当Customer对象有更多属性时 您就需要编写更多的代码来完成数据绑定功能 如果您想为Customer新增加一个属性 你不得不在 个地方进行更改 )数据库 )数据绑定 --数据业务逻辑对象 )数据绑定 --业务逻辑对象在绑定到Web控件上 )在Web窗体上添加新的控件 )数据绑定 --Web控件绑定到业务逻辑上 )数据绑定 --业务逻辑到数据库上 正如您所看到的上面方法的缺点--重复工作大且维护困难 使用微软的方式--类型化的DataSet和FormView 对于这个方法 微软已经为我们提供了很多例子了 如果您的程序足够简单 那么您就可以从Customer表里生成一个类型化的DataSet 并将其绑定到FormView上 由FormView来执行添加和编辑Customer对象的功能 您可以在下面两个地方发现如何使用他们
Creating DAL using typed DataSets Modifying Data using FormView web control
对于 Database和Business对象之间的绑定 您可以使用类型化的DataSet向导完成 对于Busiess和Web控件之间的绑定您可以使用FormView控件的InserItemTemplate和EditItemTemplate 模板完成 并制定绑定规则 类似代码如下
<asp:TextBox ID= txtLastName Text= RunAt= Server />
您可能已经注意到了在微软提供的例子里使用这种方式对简单应用程序来说 工作的确实相当的好 但是对于稍微复杂的应用程序来说 您就需要不断扩展自己的代码
这种方式可以简单数据的维护 例如你需要为Customer增加一个新的属性 你就只需要更改三处就可以了 数据库 Web Form EditItemTemplate Web Form InsertItemTemplate XLib方式的绑定 XLib在同时能够提供前面介绍的两种绑定方式外 还增加了数据维护方面的灵活性 XLib使用反射技术来自动从业务逻辑对象到数据库 到Web控件之间的映射 在执行数据库到业务逻辑对象方面 它使用了XbusinessObjectBinder对象 下面的代码片断样式了Customer对象的代码
public class Customer … public void Load() dataReader=new XDataReader(); //Load data using auto generated query into XDataReader //XDataReader works just like data reader except it automatically //converts Database values types into INulllable C# types //Binding # XBusinessObjectBinder FromDataReader(this dataReader); public void Save() XDataWriter dataWriter=new XDataWriter(); //XDataWriter automatically generates INSERT/UPDATE/DELETE sql s //statements //Binding # XBusinessObjectBinder ToDataWriter(this dataWriter) dataWriter Update();
对于业务逻辑到Web控件的绑定 它提供了XWebControlsBinder 控件 下面代码片断显示了顾客编辑页面的代码
public partial class EditCustomer protected void Page_Load(object sender EventArgs e) … protected void btnSubmit_Click(object sender EventArgs e) … private void LoadData() Customer customer=new Customer(); customerID=_customerID; customer Load(); //Binding # XWebControlsBinder FromObject(this customer); private void SaveData() Customer customer=new Customer(); if (_isUpdateMode) customer ID=_customerID; customer Load(); //Binding # //Copy control values into customer properties XwebControlsBinder ToObject(this customer); customer Save();
cha138/Article/program/net/201311/12360相关参考
希赛教育计算机专业考研专业课辅导招生 希赛教育计算机专业考研专业课辅导视频 希赛教育计算机考研专业课在线测试系统 起泡排序有两个结束条件或i=或一趟起泡中没有进行过一次交换操作后者说明该序列
浅谈三层结构与MVC模式的区别 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 有朋友谈到三层与M
ASP.NET谈三层结构与MVC模式的区别 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 在CS
JSP设计模式中的两种常见模式 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 如果你经常去S
套冬菜、西瓜接茬水稻 该模式充分利用了油稻两季接茬间的光热能和土地资源,增加复种指数,通常亩产油菜籽120公斤;冬菜1000公斤;西瓜2200公斤;水稻450公斤。 1、配置方式:油菜移栽前将大田
套冬菜、西瓜接茬水稻 该模式充分利用了油稻两季接茬间的光热能和土地资源,增加复种指数,通常亩产油菜籽120公斤;冬菜1000公斤;西瓜2200公斤;水稻450公斤。 1、配置方式:油菜移栽前将大田
建立与Oracle服务器连接的两种连接模式 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 在建立
罗非鱼(Tilapia)为一种中小形鱼,俗称非洲鲫鱼,是现在世界水产业的重点科研培养的淡水养殖鱼类,且被誉为未来动物性蛋白质的主要来源之一。罗非鱼的肉味鲜美,肉质细嫩,无论是红烧还是清烹,味道俱佳。在
罗非鱼(Tilapia)为一种中小形鱼,俗称非洲鲫鱼,是现在世界水产业的重点科研培养的淡水养殖鱼类,且被誉为未来动物性蛋白质的主要来源之一。罗非鱼的肉味鲜美,肉质细嫩,无论是红烧还是清烹,味道俱佳。在
清理SQLServer数据库日志的两种方法 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! sql