zoukankan      html  css  js  c++  java
  • 【浅谈】<.net>三层架构

    这几天我们复习三层架构因此对三层架构有了更新一层的认识,下面就由我来介绍一下.net中的三层架构

    其实一般说是三层但是可以根据不同的需求可以多加几层我一般会用以下几层

         1、表现层(UI):通俗讲就是展现给用户的界面,即用户在使用一个系统的时候他的所见所得。

        2、业务逻辑层(BLL):针对具体问题的操作,也可以说是对数据层的操作,对数据业务逻辑处理。 

        3、数据访问层(DAL):该层所做事务直接操作数据库,针对数据的增添、删除、修改、更新、查找等。s 

        4、Model  这个不能算是一个层,因为他只承载实体类
        5、数据帮助层  (DButility):数据帮助层  主要是引用一些第三方控件使用的 像什么(sqlhleper)。
    下面就开始写代码了   做一个简单的把新闻信息查出来然后显示
     
    Model层:(此层不需要引用任何层)
     (注:一般里面的信息和数据库是一致的,具体的随自己的程序而定)
     
    代码:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;

    namespace Model
    {
        /// <summary>
        /// 新闻信息
        /// </summary>
        public class NewsInfo
        {
            /// <summary>
            /// 新闻id
            /// </summary>
            private int id;

            public int Id
            {
                get { return id; }
                set { id = value; }
            }
            /// <summary>
            /// 新闻标题
            /// </summary>
            private string title;

            public string Title
            {
                get { return title; }
                set { title = value; }
            }
            /// <summary>
            /// 新闻内容
            /// </summary>
            private string contents;

            public string Contents
            {
                get { return contents; }
                set { contents = value; }
            }
            /// <summary>
            /// 发布新闻时间
            /// </summary>
            private DateTime times;

            public DateTime Times
            {
                get { return times; }
                set { times = value; }
            }
        }
    }

    DButility   此层引用sqlhleper

    DAL层

    引用DButility  和 Model

    代码

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Data.SqlClient;
    using DButility;
    using Model;
    using System.Data;
    using BibleDAL.SqlHelper;
    namespace DAL
    {
        public class News
        {
            /// <summary>
            /// 得到N条新闻列表(按时间)
            /// </summary>
            /// <param name="num">n条</param>
            /// <returns>新闻列表</returns>
            public List<NewsInfo> GetNewsList(int num)
            {
                List<NewsInfo> newsList = new List<NewsInfo>();
                SqlConnection conn = GetConn();
                string sql = "select top " + num + " * from news order by times desc";
                DataSet ds = SqlHelper.ExecuteDataset(conn,CommandType.Text,sql);
                for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
                {
                    NewsInfo info = new NewsInfo();
                    info.Id= Convert.ToInt32(ds.Tables[0].Rows[i]["id"].ToString());
                    info.Title = ds.Tables[0].Rows[i]["title"].ToString();
                    info.Contents = ds.Tables[0].Rows[i]["contents"].ToString();
                    info.Times = Convert.ToDateTime(ds.Tables[0].Rows[i]["times"].ToString());
                    newsList.Add(info);
                }
                return newsList;
            }

            /// <summary>
            /// 得到数据库连接对象
            /// </summary>
            /// <returns></returns>
            public static SqlConnection GetConn()
            {
                SqlConnection conn = new SqlConnection();
                conn.ConnectionString = "server=.;database=zhihuigu;uid=sa;pwd=;";
                conn.Open();
                return conn;
            }
        }
    }

    BLL层

    引用 DAL和Model层

    代码:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using Model;
    using DAL;

    namespace BLL
    {
        public class News
        {
            public DAL.News news = new DAL.News();
            public String GetNewsList(int num)
            {
                StringBuilder sb = new StringBuilder();
                List<NewsInfo> newsList= news.GetNewsList(num);
                sb.Append("<ul>");
                for (int i = 0; i <newsList.Count;i++)
                {
                    //sb.Append("<li><a href='looknews.aspx?id=" + newsList[i].Id + "'>"+newsList[i].Title+"</a></li>");
                    sb.Append("<li><a href=\"looknews.aspx?id=" + newsList[i].Id + "\">" + newsList[i].Title + "</a></li>");
                }
                sb.Append("</ul>");
                return sb.ToString();
            }
        }
    }

    UI层 (界面层)

    引用 BLL层

    cs代码:

    using System;
    using System.Configuration;
    using System.Data;
    using System.Linq;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.HtmlControls;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Xml.Linq;
    using Model;
    using BLL;
    public partial class _Default : System.Web.UI.Page
    {
        public BLL.News news = new News();
        protected void Page_Load(object sender, EventArgs e)
        {
           
        }
    }

    aspx 代码:

    <%@ Page Language="C#" AutoEventWireup="true"  CodeFile="newslist.aspx.cs" Inherits="_Default" %>

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title>无标题页</title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
        <%=news.GetNewsList(10) %>
        </div>
        </form>
    </body>
    </html>

        

  • 相关阅读:
    Android源码之Gallery专题研究(2)
    Android源码之Gallery专题研究(1)
    Android UI 优化——使用HierarchyViewer工具
    如何打开USB OTG功能:
    JavaSE入门学习5:Java基础语法之keyword,标识符,凝视,常量和变量
    Multiply Strings
    android动态控制组件的位置、大小和新的动画
    linux系统编程:线程同步-信号量(semaphore)
    imx6q GPIO功能的用法
    NoSQL数据库概览及其与SQL语法的比較
  • 原文地址:https://www.cnblogs.com/dugou/p/1995347.html
Copyright © 2011-2022 走看看