zoukankan      html  css  js  c++  java
  • 三层架构实例

    对于三层的概念查也查了,看也看了,下面是我找的一个关于三层的简单实例,真正看一下它是如何具体实现的.

     
    我们先来一起看看实体类-Model
    实质:实体类就是在完成数据库与实体类对应的功能,一个类是一张表,一个属性是一个字段!
    [csharp] 
    using System;  
    using System.Collections.Generic;  
    using System.Linq;  
    using System.Text;  
      
    namespace model  
    {  
        public class User  
        {  
            public User() { }  
            private string _name;  
            public string name  
            {  
                set { _name = value; }  
                get { return _name; }  
            }  
      
        }  
    }  
     
    再来说明一下,这个实例应用了配置文件来访问数据库,当然我们在做的时候可以使用SqlHelper,也可以将连接数据库的这些代码直接放在D层
    [csharp] 
    <add name="ConnectionString" connectionString="Data Source=localhost;Initial Catalog=tester;User ID=sa;Password=123456"  
               providerName="System.Data.SqlClient" />  
     
    三层中的最底层-数据访问层(DAL)  这一层要引用实体类和对Configuration的引用
    实质:就是对数据库中的内容的增,删,改,查
    [csharp]  
    using System;  
    using System.Collections.Generic;  
    using System.Linq;  
    using System.Text;  
    using model;  
    using System.Data;  
    using System.Configuration;  
    using System.Data.SqlClient;  
      
    namespace DAL  
    {  
        public class UserDB  
        {  
            public bool User_add(model.User model)  
             {  
                 string setting = ConfigurationManager.ConnectionStrings["ConnectionString"].ToString();  
                 SqlConnection myconn=new SqlConnection(setting);  
                 myconn.Open();  
                 SqlCommand cmd=new SqlCommand("insert into dbo.[user]([name]) values(@name)",myconn);  
                 cmd.Parameters.AddWithValue("@name", model.name);  
                 if (cmd.ExecuteNonQuery()>0)  
                 {  
                     return true;  
                 }  
                 else  
                 {  
                     return false;  
                 }  
             }  
        }  
    }  
     
    三层中的桥梁-业务逻辑层BLL  这一层需要引用实体类和数据访问层
    实质:负责处理U层的问题(本例子主要是对数据层的操作)
    [csharp]  
    using System;  
    using System.Collections.Generic;  
    using System.Linq;  
    using System.Text;  
    using DAL;  
      
    namespace BLL  
    {     
             public class userBLL  
              {  
                DAL.UserDB db = new UserDB();  
                public bool addUser(model.User model)  
                 {  
                   return db.User_add(model);  
                 }  
              }     
    }  
     
    三层中的顶层-表现层UI  这一层要引用实体类和业务逻辑层
    实质:具体解决做什么的问题
    [csharp]  
    using System;  
    using System.Collections.Generic;  
    using System.ComponentModel;  
    using System.Data;  
    using System.Drawing;  
    using System.Linq;  
    using System.Text;  
    using System.Windows.Forms;  
    using BLL;  
    using model;  
      
    namespace 登陆  
    {  
        public partial class Form1 : Form  
        {  
            public Form1()  
            {  
                InitializeComponent();  
            }  
      
            private void button1_Click(object sender, EventArgs e)  
            {  
                model.User thisUser = new User();  
                 thisUser.name = TB_username.Text.ToString();  
                 BLL.userBLL uB = new userBLL();  
                 if (uB.addUser (thisUser))  
                 {  
                    MessageBox.Show ("true");  
                 }  
                 else                                                      
                 {  
                     MessageBox.Show ("false");  
                 }  
             }  
            }  
        }  
     
     
    三层之间的关系:
           
     
    解释:
         上述代码中DAL主要是对数据库中的内容的操作,在这里就是向数据库中添加用户。BLL则主要是调用DAL层的操作,返回DAL层添加用户的结果 (true或者false)。这样也就是在客户端与数据库中加了一个中间层,使得两层的依赖性减小。UI层则主要完成响应用户的需求,去调用BLL层实现 的adduser方法,DAL层就是实实在在做这件事情的操作。
     
    本文转自:~~~
  • 相关阅读:
    Angle Beats Gym
    MUV LUV UNLIMITED Gym
    Balanced Diet Gym
    数位dp HDU
    数位dp CodeForces
    数位dp HDU
    有依赖的背包 洛谷P1064 金明的预算方案 (不是分组背包)
    多重背包+二进制拆分 POJ1014
    单调队列优化dp 入门 洛谷P2627 修剪草坪
    01背包 + 排序 (记忆化搜索) 骄傲的商人(HDU
  • 原文地址:https://www.cnblogs.com/labi/p/3582300.html
Copyright © 2011-2022 走看看