用VS2005.NET进行三层结构应用程序的开发

· VS2005.NET进行三层结构应用程序的开发

.三层之间的关系:

三层是指:界面显示层(UI),业务逻辑层(Business),数据操作层(Data Access)

文字描述:

ClientsUI进行操作,UI调用Business进行相应的运算和处理,Business通过Data AccessData Base进行操作。

 优点:

1、增加了代码的重用。Data Access可在多个项目中公用;Business可在同一项目的不同地方使用(如某个软件B/SC/S部分可以共用一系列的Business组件)。

2、使得软件的分层更加明晰,便于开发和维护。美工人员可以很方便地设计UI设计,并在其中调用Business给出的接口,而程序开发人员则可以专注的进行代码的编写和功能的实现。
.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

   {

 

        #region Variables

 

        private string m_strConnectionString;

        private OleDbConnection m_objConnection;

 

        #endregion Variables

 

        #region Functions

 

        #region DataAgend

        /// <summary>

        /// Initial Function

        /// </summary>

        /// <param name="strConnection"></param>

        public DataAgent(string strConnection)

        {

             this.m_strConnectionString = strConnection;

        }

        #endregion DataAgend

 

        #region OpenDataBase

        /// <summary>

        /// function to open data base

        /// </summary>

        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 OpenDataBase

 

        #region CloseDataBase

        /// <summary>

        /// the function to cloase data base

        /// </summary>

        private void CloseDataBase()

        {

             if(this.m_objConnection != null)

             {

                   if(this.m_objConnection.State == ConnectionState.Open)

                   {

                        this.m_objConnection.Close();

                   }

             }

        }

        #endregion

 

        #region GetDataView

        /// <summary>

        /// Execute the sql and return the default table view

        /// </summary>

        /// <param name="strSelectString">Select String</param>

        /// <returns>DataView of the DataTable</returns>

        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 GetDataTable

        #endregion Functions

 

  }
.Business的具体实现:

建立名为Base的类,此类作为其他事务类的基类,其中定义了一个DataAgent的实例。其他所有的Business类都从该改类派生。

在该类中添加对DataAgent的引用,使所有的事务类都能使用DataAgent中的方法。

Base.cs源代码: 

   public abstract class Base

   {

        #region DataAgent

        private DataAgent m_objDBAgent;

 

        protected DataAgent OleDBAgent

        {

             get

             {

                   if(this.m_objDBAgent == null)

                   {

                        this.m_objDBAgent = this.CreateAgent();

                   }

                   return this.m_objDBAgent;

             }

             set

             {

                   this.m_objDBAgent = value;

             }

        }

        #endregion DataAgent

 

        public Base()

        {

        }

 

        #region CreateAgent

        /// <summary>

        /// Create a new DataAgent

        /// </summary>

        /// <returns>the DataAgent</returns>

        private DataAgent CreateAgent()

        {

             string strConnection = ConfigurationSettings.AppSettings["ConnectionString"];

             return new DataAgent(strConnection);

        }

        #endregion CreateAgent

   }

 

 

    准备好了数据操作层和事务层的基类,底下就可以正式地开始业务逻辑类的开发了,如有一个显示新闻的类News,其中包含了一个GetNewsLsit()的方法,该方法用来获取所有的新闻标题列表,代码如下:

 

   public class News: Base

   {

        public News Contact()

        {

 

        }

 

        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 base.OleDBAgent.GetDataView(strSql);

 

        }

   }

 

由于数据库结构比较简单,在此就不再给出详细的表结构。

 

.UI层对Business中接口的调用

首先,在页面中添加对News类的引用。

然后,在页面中添加一个(DataGrid)dgNews用来显示新闻列表。

Page BehindPage_Load方法中添加如下代码:

 

        News objNews = new News();

        this.dgNews.DataSource = objNews.GetNewsList();

   this.dgNews.DataBind();

 

    至此,大功告成!




Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1829879

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值