科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件怎样用VS2005进行三层结构应用程序的开发

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

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

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

2007年10月22日

关键字: 冷枫

  • 评论
  • 分享微博
  • 分享邮件

  用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  

  具体实现代码如下:  

  publicclassDataAgent

  {  

  #regionVariables

  privatestringm_strConnectionString;

  privateOleDbConnection m_objConnection;

  

  #endregionVariables  

  #regionFunctions  

  #regionDataAgend

  ///

  ///Initial Function

  ///

  ///

  publicDataAgent(stringstrConnection)

  {

  this.m_strConnectionString = strConnection;

  }

  #endregionDataAgend

  

  #regionOpenDataBase

  ///

  ///function to open data base

  ///

  privatevoidOpenDataBase()

  {

  try

  {

  this.m_objConnection = newOleDbConnection();

  this.m_objConnection.ConnectionString = this.m_strConnectionString;

  

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

  {

  this.m_objConnection.Open();

  }

  }

  catch(Exception e)

  {

  throwe;

  }

  }

  #endregionOpenDataBase

  

  #regionCloseDataBase

  ///

  ///the function to cloase data base

  ///

  privatevoidCloseDataBase()

  {

  if(this.m_objConnection != null)

  {

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

  {

  this.m_objConnection.Close();

  }

  }

  }

  #endregion

  

  #regionGetDataView

  ///

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

  ///

  ///Select String

  ///DataView of the DataTable

  publicDataView GetDataView(stringstrSqlStat)

  {

  try

  {

  this.OpenDataBase();

  OleDbDataAdapter objDataAdapter = newOleDbDataAdapter(strSqlStat.Trim(),this.m_objConnection);

  DataSet objDataSet = newDataSet();

  objDataAdapter.Fill(objDataSet);

  returnobjDataSet.Tables[0].DefaultView;

  }

  catch(Exception e)

  {

  throwe;

  }

  finally

  {

  this.CloseDataBase();

  }

  }

  #endregionGetDataTable

  #endregionFunctions

  

  }

  3.Business的具体实现:

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

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

  Base.cs源代码:  

  publicabstractclassBase

  {

  #regionDataAgent

  privateDataAgent m_objDBAgent;

  

  protectedDataAgent OleDBAgent

  {

  get

  {

  if(this.m_objDBAgent == null)

  {

  this.m_objDBAgent = this.CreateAgent();

  }

  returnthis.m_objDBAgent;

  }

  set

  {

  this.m_objDBAgent = value

  }

  }

  #endregionDataAgent

  

  publicBase()

  {

  }

  

  #regionCreateAgent

  ///

  ///Create a new DataAgent

  ///

  ///the DataAgent

  privateDataAgent CreateAgent()

  {

  stringstrConnection = ConfigurationSettings.AppSettings["ConnectionString"];

  returnnewDataAgent(strConnection);

  }

  #endregionCreateAgent

  }  

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

  publicclassNews: Base

  {

  publicNews Contact()

  {  

  }  

  publicDataView GetNewsList()

  {

  stringstrSql;

  strSql = "";

  strSql += " SELECT Top 10 NewsId,NewsTitle ";

  strSql += " FROM Tb_News";

  strSql += " WHERE NewsEnable = 1";

  strSql += "ORDER BY NewsId ";

  

  returnbase.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();  

  至此,大功告成!

 查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章