如何实现asp.net三层架构


既然是三层,肯定在物理逻辑上就要进行区分的,因此在项目文件夹下,有WebUI、BLL、DAL、Common这四个文件夹和Default.aspx等首页文件,其实最主要的就是前三个文件夹,Common文件夹里保存了一些样式文件和JS文件,个人感觉这些文件可以放到WebUI里的。o(∩_∩)o...,这几个文件夹用来作什么应该从命名上能看出来吧?WebUI用来保存页面文件,也就是大家在浏览网页的时候能看见的,最直观的,也是这三层中最简单的;BLL用来保存业务逻辑,起到一个承上启下的作用,用来连接WebUI层和DAL层,主要是定义一些方法,相对来讲比WebUI要复杂;DAL文件夹主要是保存对数据库操作的一些文件,主要是对一些SQL语句(存储过程)的执行。这三层之间的关系是上层引用下层,即WebUI引用BLL,BLL引用DLL。这三层联系起来就是这样一个过程:在页面添加一些信息经过合理性判断(WebUI)后调用BLL层的函数(方法),下面的代码属于WebUI层

            int intUserID = (int)this.LogonUser.User_Emp.Rows[0]["UserId"];//获得当前登陆用户的ID
             DataSet ds = contractRule.GetContractList_By_ApplicantID( intUserID, flag, rentName, startDate, endDate, isOpen );//其中GetContractList_By_ApplicantID()就是ContractRule.cs(BLL层)中的一个方法
             ds.Tables[0].DefaultView.Sort = ViewState["Sort"].ToString();
            this.dgPayment.DataSource = ds.Tables[0].DefaultView;
            this.dgPayment.DataKeyField = "ContractID";
            this.dgPayment.DataBind();在ContractRule.cs页面根据传过来的数据再调用ContractDA.cs(DLL层)的方法,下面的代码属于BLL层         /** <summary>
        /// 根据用户获得合同信息
        /// </summary>
        /// <param name="intApplicantID"></param>
        /// <param name="flag"></param>
        /// <param name="contractName"></param>
        /// <param name="dtBeginDate"></param>
        /// <param name="dtEndDate"></param>
        /// <returns></returns>
        public DataSet GetContractList_By_ApplicantID(int intApplicantID, int flag, string contractName, DateTime dtBeginDate, DateTime dtEndDate, bool isOpen)
        ...{
            using( ContractDA contractDA = new ContractDA() )
            ...{
                return contractDA.GetContractList_By_ApplicantID( intApplicantID,flag,contractName,dtBeginDate,dtEndDate,isOpen);//其中GetContractList_By_ApplicantID()是ContractDA.cs(DLL层)页面中的一个方法            }
         }在ContractDA.cs页面中的GetContractList_By_ApplicantID()方法根据传入的信息,通过SQL语句(存储过程)来进行对数据库的操作。下面的代码属于DAL层         /** <summary>
        /// 根据用户获得合同信息
        /// </summary>
        /// <param name="intApplicantID"></param>
        /// <param name="flag"></param>
        /// <param name="contractName"></param>
        /// <param name="dtBeginDate"></param>
        /// <param name="dtEndDate"></param>
        /// <returns></returns>
        public DataSet GetContractList_By_ApplicantID(int intApplicantID, int flag, string contractName, DateTime dtBeginDate, DateTime dtEndDate, bool isOpen)
        ...{
             SqlCommand   command = new SqlCommand();

             command.CommandText = "Contract_Query";//存储过程名
             command.Connection = this.mySqlConnection;
             command.CommandType = CommandType.StoredProcedure;

             command.Parameters.Add( "@ApplicantID", intApplicantID );//传入参数
            //tg070712
             command.Parameters.Add( "@Flag", flag );/传入参数
             command.Parameters.Add( "@ContractName", contractName );/传入参数
             command.Parameters.Add( "@BeginDate", dtBeginDate );/传入参数
             command.Parameters.Add( "@EndDate", dtEndDate );/传入参数

            this.mySqlDataAdapter.SelectCommand = command;
           
             DataSet ds = new DataSet();
            this.mySqlDataAdapter.Fill( ds );
            return ds;//返回ds数据集
         }

至此,一个三层意义上的数据流转过程就完成了。因为自己入门不是很深,所以上面的想法未免有纰漏,还请各路高手指点。
 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值