您的位置:首页 > 其它

怎样用VS2005进行三层结构应用程序的开发

2007-12-19 00:10 393 查看
 用VS2005.NET进行三层结构应用程序的开发1.三层之间的关系:

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

文字描述:

Clients对UI进行操作,UI调用Business进行相应的运算和处理,Business通过Data Access对Data Base进行操作。 优点:1、增加了代码的重用。Data Access可在多个项目中公用;Business可在同一项目的不同地方使用(如某个软件B/S和C/S部分可以共用一系列的Business组件)。2、使得软件的分层更加明晰,便于开发和维护。美工人员可以很方便地设计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     {          #region Variables          private string m_strConnectionString;         private OleDbConnection m_objConnection;          #endregion Variables          #region Functions          #region DataAgend         ///          /// Initial Function         ///          ///          public DataAgent(string strConnection)         {              this.m_strConnectionString = strConnection;         }         #endregion DataAgend          #region OpenDataBase         ///          /// function to open data base         ///          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         ///          /// the function to cloase data base         ///          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 GetDataTable         #endregion Functions      }

3.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         ///          /// Create a new DataAgent         ///          /// the DataAgent         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);          }     } 由于数据库结构比较简单,在此就不再给出详细的表结构。 

4.UI层对Business中接口的调用

首先,在页面中添加对News类的引用。然后,在页面中添加一个(DataGrid)dgNews用来显示新闻列表。在Page Behind的Page_Load方法中添加如下代码:          News objNews = new News();         this.dgNews.DataSource = objNews.GetNewsList();    this.dgNews.DataBind();        至此,大功告成!

Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1829879
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: