logo资料库

C#基于CS架构三层架构设计实例描述.pdf

第1页 / 共6页
第2页 / 共6页
第3页 / 共6页
第4页 / 共6页
第5页 / 共6页
第6页 / 共6页
资料共6页,全文预览结束
三层架构C/S程序设计实例(C#描述) 1 三层之间的关系: 三层是指:界面显示层(UI),业务逻辑层(Business),数据操作层(Data Access) 文字描述: Clients对UI进行操作,UI调用Business进行相应的运算和处理,Business通过 Data Access对Data Base进行操作。 优点: *增加了代码的重用。Data Access可在多个项目中公用;Business可在同一项 目的不同地方使用(如某个软件B/S和C/S部分可以共用一系列的Business组件)。 *使得软件的分层更加明晰,便于开发和维护。美工人员可以很方便地设计 UI设计,并在其中调用Business给出的接口,而程序开发人员则可以专注的进行 代码的编写和功能的实现。 2 Data Access的具体实现: DataAgent类型中变量和方法的说明: private string m_strConnectionString; //连接字符串 private OleDbConnection m_objConnection; //数据库连接 public DataAgent(string strConnection) //构造方法,传入的参数为连接字符串 private void OpenDataBase() //打开数据库连接 private void #region CloseDataBase() //关闭数据库连接 public DataView GetDataView(string strSqlStat) //根据传入的连接字符串返回 DataView 具体实现代码如下: public class DataAgent
{ private string m_strConnectionString; private OleDbConnection m_objConnection; #region DataAgend /// /// Initial Function /// /// public DataAgent(string strConnection) { } this.m_strConnectionString = strConnection; #endregion #region OpenDataBase /// /// Open Database /// private void OpenDataBase() { try { this.m_objConnection = new OleDbConnection(); this.m_objConnection.ConnectionString = this.m_strConnectionString; if (this.m_objConnection.State != ConnectionState.Open) {
this.m_objConnection.Open(); } } catch (Exception e) { } throw e; } #endregion #region CloseDataBase /// /// Close Database /// private void CloseDataBase() { if (this.m_objConnection != null) { } if (this.m_objConnection.State == ConnectionState.Open) { } this.m_objConnection.Close(); } #endregion #region GetDataView
/// /// Execute the sql and return the default table view /// ///Select String ///DataView of the DataTable public DataView GetDataView(string strSqlStat) { try { this.OpenDataBase(); OleDbDataAdapter objDataAdapter = new OleDbDataAdapter(strSqlStat.Trim(), this.m_objConnection); DataSet objDataSet = new DataSet(); objDataAdapter.Fill(objDataSet); return objDataSet.Tables[0].DefaultView; } catch (Exception e) { } throw e; finally { } this.CloseDataBase(); } #endregion
} 3 Business 的具体实现: 建立名为Base的类,此类作为其他事务类的基类,其中定义了一个DataAgent 的实例。其他所有的Business类都从该改类派生。 在该类中添加对DataAgent的引用,使所有的事务类都能使用DataAgent中的 方法。 Base.cs源代码: public abstract class Base { protected DataAgent OleDBAgent = new DataAgent("Provider=SQLOLEDB;Data Source=(local);DataBase=test;User ID=sa;PWD="); } 准备好了数据操作层和事务层的基类,底下就可以正式地开始业务逻辑类的 开发了,如有一个显示新闻的类News,其中包含了一个GetNewsList()的方法,该 方法用来获取所有的新闻标题列表,代码如下: public class News : Base { public DataView GetNewsList() { string strSql; strSql = ""; strSql += " SELECT Top 10 NewsId,NewsTitle "; strSql += " FROM Tb_News"; strSql += " WHERE NewsEnable = 1"; strSql += " ORDER BY NewsId "; return OleDBAgent.GetDataView(strSql);
} } 由于数据库结构比较简单,在此就不再给出详细的表结构。 4 UI 层对Business中接口的调用 首先,在窗体Form1中添加对News类的引用。 然后,在窗体Form1中添加一个(DataGridView)dgNews用来显示新闻列表。 在窗体的Form1_Load方法中添加如下代码: private void Form1_Load(object sender, EventArgs e) { News objNews = new News(); this.dgNews.DataSource = objNews.GetNewsList(); }
分享到:
收藏