怎样用VS进行三层结构应用程序的开发.docx
《怎样用VS进行三层结构应用程序的开发.docx》由会员分享,可在线阅读,更多相关《怎样用VS进行三层结构应用程序的开发.docx(13页珍藏版)》请在冰豆网上搜索。
怎样用VS进行三层结构应用程序的开发
用VS2005.NET进行三层结构应用程序的开发
1.三层之间的关系:
三层是指:
界面显示层(UI),业务逻辑层(Business),数据操作层(DataAccess)
文字描述:
Clients对UI进行操作,UI调用Business进行相应的运算和处理,Business通过DataAccess对DataBase进行操作。
优点:
1、增加了代码的重用。
DataAccess可在多个项目中公用;Business可在同一项目的不同地方使用(如某个软件B/S和C/S部分可以共用一系列的Business组件)。
2、使得软件的分层更加明晰,便于开发和维护。
美工人员可以很方便地设计UI设计,并在其中调用Business给出的接口,而程序开发人员则可以专注的进行代码的编写和功能的实现。
2.DataAccess的具体实现:
DataAgent类型中变量和方法的说明:
privatestringm_strConnectionString;//连接字符串
privateOleDbConnectionm_objConnection;//数据库连接
publicDataAgent(stringstrConnection)//构造方法,传入的参数为连接字符串
privatevoidOpenDataBase()//打开数据库连接
privatevoid#regionCloseDataBase()//关闭数据库连接
publicDataViewGetDataView(stringstrSqlStat)//根据传入的连接字符串返回DataView
具体实现代码如下:
publicclassDataAgent
{
#regionVariables
privatestringm_strConnectionString;
privateOleDbConnectionm_objConnection;
#endregionVariables
#regionFunctions
#regionDataAgend
///
///InitialFunction
///
///
publicDataAgent(stringstrConnection)
{
this.m_strConnectionString=strConnection;
}
#endregionDataAgend
#regionOpenDataBase
///
///functiontoopendatabase
///
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(Exceptione)
{
throwe;
}
}
#endregionOpenDataBase
#regionCloseDataBase
///
///thefunctiontocloasedatabase
///
privatevoidCloseDataBase()
{
if(this.m_objConnection!
=null)
{
if(this.m_objConnection.State==ConnectionState.Open)
{
this.m_objConnection.Close();
}
}
}
#endregion
#regionGetDataView
///
///Executethesqlandreturnthedefaulttableview
///
///SelectString
///DataViewoftheDataTable
publicDataViewGetDataView(stringstrSqlStat)
{
try
{
this.OpenDataBase();
OleDbDataAdapterobjDataAdapter=newOleDbDataAdapter(strSqlStat.Trim(),this.m_objConnection);
DataSetobjDataSet=newDataSet();
objDataAdapter.Fill(objDataSet);
returnobjDataSet.Tables[0].DefaultView;
}
catch(Exceptione)
{
throwe;
}
finally
{
this.CloseDataBase();
}
}
#endregionGetDataTable
#endregionFunctions
}
3.Business的具体实现:
建立名为Base的类,此类作为其他事务类的基类,其中定义了一个DataAgent的实例。
其他所有的Business类都从该改类派生。
在该类中添加对DataAgent的引用,使所有的事务类都能使用DataAgent中的方法。
Base.cs源代码:
publicabstractclassBase
{
#regionDataAgent
privateDataAgentm_objDBAgent;
protectedDataAgentOleDBAgent
{
get
{
if(this.m_objDBAgent==null)
{
this.m_objDBAgent=this.CreateAgent();
}
returnthis.m_objDBAgent;
}
set
{
this.m_objDBAgent=value;
}
}
#endregionDataAgent
publicBase()
{
}
#regionCreateAgent
///
///CreateanewDataAgent
///
///theDataAgent
privateDataAgentCreateAgent()
{
stringstrConnection=ConfigurationSettings.AppSettings["ConnectionString"];
returnnewDataAgent(strConnection);
}
#endregionCreateAgent
}
准备好了数据操作层和事务层的基类,底下就可以正式地开始业务逻辑类的开发了,如有一个显示新闻的类News,其中包含了一个GetNewsLsit()的方法,该方法用来获取所有的新闻标题列表,代码如下:
publicclassNews:
Base
{
publicNewsContact()
{
}
publicDataViewGetNewsList()
{
stringstrSql;
strSql="";
strSql+="SELECTTop10NewsId,NewsTitle";
strSql+="FROMTb_News";
strSql+="WHERENewsEnable=1";
strSql+="ORDERBYNewsId";
returnbase.OleDBAgent.GetDataView(strSql);
}
}
由于数据库结构比较简单,在此就不再给出详细的表结构。
4.UI层对Business中接口的调用
首先,在页面中添加对News类的引用。
然后,在页面中添加一个(DataGrid)dgNews用来显示新闻列表。
在PageBehind的Page_Load方法中添加如下代码:
NewsobjNews=newNews();
this.dgNews.DataSource=objNews.GetNewsList();
this.dgNews.DataBind();
至此,大功告成!
publicclassDataAgent
{
#regionVariables
/////////////////////////////////////
用VS2005.NET进行三层结构应用程序的开发
1.三层之间的关系:
三层是指:
界面显示层(UI),业务逻辑层(Business),数据操作层(DataAccess)
文字描述:
Clients对UI进行操作,UI调用Business进行相应的运算和处理,Business通过DataAccess对DataBase进行操作。
优点:
1、增加了代码的重用。
DataAccess可在多个项目中公用;Business可在同一项目的不同地方使用(如某个软件B/S和C/S部分可以共用一系列的Business组件)。
2、使得软件的分层更加明晰,便于开发和维护。
美工人员可以很方便地设计UI设计,并在其中调用Business给出的接口,而程序开发人员则可以专注的进行代码的编写和功能的实现。
2.DataAccess的具体实现:
DataAgent类型中变量和方法的说明:
privatestringm_strConnectionString;//连接字符串
privateOleDbConnectionm_objConnection;//数据库连接
publicDataAgent(stringstrConnection)//构造方法,传入的参数为连接字符串
privatevoidOpenDataBase()//打开数据库连接
privatevoid#regionCloseDataBase()//关闭数据库连接
publicDataViewGetDataView(stringstrSqlStat)//根据传入的连接字符串返回DataView
具体实现代码如下:
publicclassDataAgent
{
#regionVariables
privatestringm_strConnectionString;
privateOleDbConnectionm_objConnection;
#endregionVariables
#regionFunctions
#regionDataAgend
///
///InitialFunction
///
///
publicDataAgent(stringstrConnection)
{
this.m_strConnectionString=strConnection;
}
#endregionDataAgend
#regionOpenDataBase
///
///functiontoopendatabase
///
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(Exceptione)
{
throwe;
}
}
#endregionOpenDataBase
#regionCloseDataBase
///
///thefunctiontocloasedatabase
///
privatevoidCloseDataBase()
{
if(this.m_objConnection!
=null)
{
if(this.m_objConnection.State==ConnectionState.Open)
{
this.m_objConnection.Close();
}
}
}
#endregion
#regionGetDataView
///
///Executethesqlandreturnthedefaulttableview
///
///SelectString
///DataViewoftheDataTable
publicDataViewGetDataView(stringstrSqlStat)
{
try
{
this.OpenDataBase();
OleDbDataAdapterobjDataAdapter=newOleDbDataAdapter(strSqlStat.Trim(),this.m_objConnection);
DataSetobjDataSet=newDataSet();
objDataAdapter.Fill(objDataSet);
returnobjDataSet.Tables[0].DefaultView;
}
catch(Exceptione)
{
throwe;
}
finally
{
this.CloseDataBase();
}
}
#endregionGetDataTable
#endregionFunctions
}
3.Business的具体实现:
建立名为Base的类,此类作为其他事务类的基类,其中定义了一个DataAgent的实例。
其他所有的Business类都从该改类派生。
在该类中添加对DataAgent的引用,使所有的事务类都能使用DataAgent中的方法。
Base.cs源代码:
publicabstractclassBase
{
#regionDataAgent
privateDataAgentm_objDBAgent;
protectedDataAgentOleDBAgent
{
get
{
if(this.m_objDBAgent==null)
{
this.m_objDBAgent=this.CreateAgent();
}
returnthis.m_objDBAgent;
}
set
{
this.m_objDBAgent=value;
}
}
#endregionDataAgent
publicBase()
{
}
#regionCreateAgent
///
///CreateanewDataAgent
///
///theDataAgent
privateDataAgentCreateAgent()
{
stringstrConnection=ConfigurationSettings.AppSettings["ConnectionString"];
returnnewDataAgent(strConnection);
}
#endregionCreateAgent
}
准备好了数据操作层和事务层的基类,底下就可以正式地开始业务逻辑类的开发