zoukankan      html  css  js  c++  java
  • asp.net三层框架的简单理解

    对于三层框架我是在培训的时候用到的,尤其是在测验的时候用的比较多!由于本人也是新人!对于三层了解的不是很透彻,下面我只把我自己所知道的所了解到的给大家说说,希望高手多多批评。

    对于三层我简单的说下大概意思,三层顾名思义,三层就是有三个层次组成,分别是:表示层(UI)、业务逻辑层(BLL)、数据访问层(DAL),三层的主要目的是“高内聚,低耦合”它的精髓在于功

    能的层次清晰,代码可读性高,复用性高。

    表示层的意思就是把界面显示给用户所看到的。业务逻辑层可以说是表示层和数据库访问层的一个桥梁,它是对数据业务逻辑的处理,有时也可以写一些验证。数据库访问层是直接对数据库的操作,

    主要是对数据的增、删、改、查。

    在三层中有个特殊的层Model,这个不算是一个层,是个实体类主要是用于封装字段,是数据的载体。

    下面详细的介绍下,首先表示层用于用户接口的展示,以及用业务层的类和对象来“驱动”这些接口。该层包括aspx页面、服务器控制、用户控制以及某些于安全相关的类和对象。
    业务逻辑层是用于访问数据层,把数据库访问层的数据进行提取、修改以及删除,然后把取得的数据放到DataReader或者DataSet中返回给表示层,主要是对数据层的一个方法的调用。
    数据库访问层里面主要是写一些增删改的方法,具体就是对数据库的操作,就是把数据库中的数据用SQL语句读出来然后业务逻辑层调用。
    我简单的说下把数据从数据库中读到表示层也就是简单的增删改例子,首先在Webconfig中写连接数据库的代码比如:<connectionStrings>
      <add name="ConnectionSQL" connectionString="server=192.1.1.253;database=NewSpring;uid=sa;pwd=sa"/> 
        </connectionStrings>

    然后建立一个实体类类库Model在其中把数据库中的数据写入比如:private string yourname;
                  public string YourName
                  {
                       get { return yourname; }
                       set { yourname = value; }
                   }
    之后就是三层了,先在DAL中建立DBHelper类在此类中先进行数据库的连接操作比如:
    private static string connectionString = ConfigurationManager.ConnectionStrings["ConntectionSQL"].ToString();
            /// <summary>
            /// 连接数据库的方法
            /// </summary>
            /// <returns>返回数据库的连接</returns>
            public static SqlConnection Getconn()
            {

                if (conn == null)
                {
                    conn = new SqlConnection();
                    conn.ConnectionString = connectionString;
                    conn.Open();
                }
                if (conn.State == System.Data.ConnectionState.Closed)
                {
                    conn.Open();
                }
                return conn;
            }

    然后是在DAL中写一些增删改查的方法比如:

       /// <summary>
            /// 查询方法  使用拼接字符串 返回DataTable对象(拼接字符串方法)
            /// </summary>
            /// <param name="sqlstring">sql语句</param>
            /// <returns>DataTable</returns>
            public static DataTable SelInfoRetrunDTbyString(string sqlstring)
            {
                try
                {
                    conn = Getconn();
                    cmd = new SqlCommand();
                    cmd.Connection = conn;
                    cmd.CommandText = sqlstring;
                    SqlDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
                    dt = new DataTable();
                    dt.Load(reader);
                    reader.Close();
                    return dt;
                }
                catch (Exception ex)
                {
                    throw ex;
                }
                finally
                {
                    conn.Close();
                }
            }

    然后还是在DAL中写Service类这个主要是对数据库中的数据读取比如:
            /// <summary>
            /// 得到日志表里的所有内容查询页面加载时需要显示所有的文章信息
            /// </summary>
            /// <returns>返回一个范型集合</returns>
            public static IList<Articles> GetArticels()
            {
                string sql = "select * from Articles";
                DataTable dt = DBHelper.SelInfoRetrunDTbyString(sql);
                IList<Articles> list = new List<Articles>();
                foreach (DataRow dr in dt.Rows)
                {
                    Articles articles = new Articles();

                    articles.ID = (int)dr["ID"];
                    articles.YourName = dr["YourName"].ToString();
                    articles.Title = dr["Titile"].ToString();
                    list.Add(articles);

                }
                return list;
            }
    然后再在BLL层建立Manager再在此类中调用比如:
            /// <summary>
            /// 加载数据显示
            /// </summary>
            /// <returns></returns>
            public static IList<Articles> GetArticles()
            {
                return ArticlesSerivec.GetArticles();
            }

    最后就是表示层了,在.aspx中进行调用就可以了,比如说利用GridView来进行数据的显示,前代码是用Eval进行绑定 比如:
                    <asp:TemplateField HeaderText="YourName">
                        <ItemTemplate>
                            <asp:Label ID="lb1" runat="server" Text='<%#Eval ("YourName") %>'></asp:Label>
                        </ItemTemplate>
                    </asp:TemplateField>
    它的后台就是简单的绑定下就可以了比如:
    protected void Page_Load(object sender, EventArgs e)
            {
                GridView1.DataSource = ArticlesManager.GetArtilces();
                GridView1.DataBind();
            }
    这个就是一个非常简单的把数据从数据库中读到页面上的完整过程思路是先进行Webconfig的连接数据库,然后再在DAL中先写DBHepler类在此类中先判断数据的状态,在写一些比如增删改的东西,然

    后再在DAL中建立另一个类Service在此类中进行对数据库的基本操作,之后再在BLL中建立一个Manager类在此类中调用DAL中的一些获得数据的方法,然后就是在表示层进行调用就可以了,至于用的

    方式就千姿百态了。

    三层的简单概括:三层结构是一种严格分层方法,即数据访问层只能被业务逻辑层访问,业务逻辑层只能被表示层访问,用户通过表示层将请求传送给业务逻辑层,业务逻辑层完成相关业务规则和逻

    辑,并通过数据访问层访问数据库获得数据,然后按照相反的顺序依次返回将数据显示在表示层。

    作者:青苹果
    座右铭:不断的反省自己!然后加以改变!
    感兴趣的技术:.NET、数据库、JavaScript、C#、ajax、winform、jquery、extjs
    本文出处:http://www.cnblogs.com/xinchun/

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    Linux 设备驱动--- Poll 方法 --- Select【转】
    Linux 设备驱动--- 阻塞型字符设备驱动 --- O_NONBLOCK --- 非阻塞标志【转】
    一篇不错的v4l2入门文档【转】
    戴文的Linux内核专题:03 驱动程序【转】
    戴文的Linux内核专题:02 源代码【转】
    使用 Python 开始你的机器学习之旅【转】
    双缓冲(Double Buffer)原理和使用【转】
    内核中的内存申请:kmalloc、vmalloc、kzalloc、kcalloc、get_free_pages【转】
    几种常见的YUV格式--yuv422:yuv420【转】
    C程序编译过程浅析【转】
  • 原文地址:https://www.cnblogs.com/xinchun/p/2105418.html
Copyright © 2011-2022 走看看