精通
英语
和
开源
,
擅长
开发
与
培训
,
胸怀四海
第一信赖
锐英源精品开源心得,转载请注明:“锐英源www.wisestudy.cn,孙老师作品,电话13803810136。”需要全文内容也请联系孙老师。
介绍
本文讨论了3层架构的实现,使用C#和一个使用MS Access数据库的虚拟客户系统。在这篇文章中,我想实现一个小型的可重用组件,维护客户的3层架构。它显示了如何添加,更新和寻找客户的详细信息。
背景
首先我想讨论一些关于理论方面的3层架构。我将简要描述3层架构是什么,什么是它的优点。
什么是3层架构?
三层(层)是一个客户端 - 服务器架构,在此架构里用户界面、业务流程(业务规则)和数据存储及数据访问模块作为互相独立的模块,或通常部署在分离的平台上,以独立和分离为目的来开发和维护。基本上,有3层:第1层(表示层,GUI层)、2层(业务对象,业务逻辑层)和第3层(数据访问层)。这些层可以单独开发和测试。 把代码分成3层的需要是把业务逻辑及数据库访问和用户界面分离具有许多优点。如下:
使用代码 这个组件有3层。第1层或GUI层的一种形式被称为FrmGUI,第2层或业务逻辑将被称为短BOCustomer:业务对象客户,最后3层或数据层称为短DACustomer。在同一项目中为便于工作,我已编制3层。我包括所有的源代码,以及MS Access数据库,用来测试这个项目中所包含的zip文件。 用户界面层 这是一个从用户界面的代码块。这里只列出了用于调用中间层或业务逻辑层的功能代码。 我保留了一个业务逻辑层的引用,引用为BOCustomer。
//This function get the details from the user via GUI //tier and calls the Add method of business logic layer.本函数通过GUI层得到用户具体信息且调用业务逻辑层的Add方法 private void cmdAdd_Click(object sender, System.EventArgs e) { try { cus = new BOCustomer(); cus.cusID=txtID.Text.ToString(); cus.LName = txtLName.Text.ToString(); cus.FName = txtFName.Text.ToString(); cus.Tel= txtTel.Text.ToString(); cus.Address = txtAddress.Text.ToString(); cus.Add(); } catch(Exception err) { MessageBox.Show(err.Message.ToString()); } } //This function gets the ID from the user and finds the //customer details and return the details in the form of //a dataset via busniss object layer. Then it loops through //the content of the dataset and fills the controls. 本函数得到用户ID,且查找客户细节,且通过业务逻辑层以数据集的形式返回细节。接着它遍历数据集的内容且填充控件 private void cmdFind_Click(object sender, System.EventArgs e) { try { String cusID = txtID.Text.ToString(); BOCustomer thisCus = new BOCustomer(); DataSet ds = thisCus.Find(cusID); DataRow row; row = ds.Tables[0].Rows[0]; //via looping foreach(DataRow rows in ds.Tables[0].Rows ) { txtFName.Text = rows["CUS_F_NAME"].ToString(); txtLName.Text = rows["CUS_L_NAME"].ToString(); txtAddress.Text = rows["CUS_ADDRESS"].ToString(); txtTel.Text = rows["CUS_TEL"].ToString(); } } catch (Exception err) { MessageBox.Show(err.Message.ToString()); } } //this function used to update the customer details. 用于更新 private void cmdUpdate_Click(object sender, System.EventArgs e) { try { cus = new BOCustomer(); cus.cusID=txtID.Text.ToString(); cus.LName = txtLName.Text.ToString(); cus.FName = txtFName.Text.ToString(); cus.Tel= txtTel.Text.ToString(); cus.Address = txtAddress.Text.ToString(); cus.Update(); } catch(Exception err) { MessageBox.Show(err.Message.ToString()); } }