正文

用VS2005.NET进行三层结构应用程序的开发2008-08-23 09:50:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/iamben250/37804.html

分享到:

用VS2005.NET进行三层结构应用程序的开发 开发者在线 Builder.com.cn 更新时间:2008-01-27作者:冷枫 来源:CSDN 本文关键词: 三层结构 VS2005 .net .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          /// <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        } 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          /// <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);            }      }   由于数据库结构比较简单,在此就不再给出详细的表结构。   4.UI层对Business中接口的调用 首先,在页面中添加对News类的引用。 然后,在页面中添加一个(DataGrid)dgNews用来显示新闻列表。 在Page Behind的Page_Load方法中添加如下代码:            News objNews = new News();          this.dgNews.DataSource = objNews.GetNewsList();     this.dgNews.DataBind();

阅读(2070) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册