`

[转]三层架构实战篇—系统登录实例

 
阅读更多
转自http://www.cnblogs.com/javawebsoa/archive/2013/05/21/3091747.html
    
    上一篇博客,介绍了三层的一些基本理论,但是学习光有理论还是不行滴!毛大大不也说过了吗?实践是检验真理的唯一标准!

    所谓的三层分为物理上的三层和逻辑上的三层。物理上的三层包括:客户端(PC)、应用服务器、数据库服务器。逻辑上的三层,也就是我们要讨论的,分为表示层、业务逻辑层、数据访问层。实体层,严格的来说不属于三层中的任一层,它是独立于其他三个层次的,只能供其他层次进行引用,但是不能引用其他的三个层次。

     下面是数据在三层中的一个具体走向图,这对于我们了解三层的一条线很有帮助。



三层应用原则:
    DAL只提供基本的数据访问,不包含任何的业务逻辑
    UI只负责显示和采集用户操作,不包含任何业务相关的逻辑处理
    BLL负责处理业务逻辑。通过获取UI传来的用户指令,执行业务逻辑,在需要访问数据源的时候,直接交个DAL进行处理。处理完成后,返回必要数据给UI。

    
    实现步骤:
    (1)前期准备:
      1.根据上一层引用下一层以及实体层在各层的作用,绘制UML图。

     
      2.根据UML图显示的关系,构建三层框架。


      3.建立数据库,包含UserInfo表。


    (2)代码实现阶段
    1.用户界面层(LoginUI):
    作用:
        向用户展现特定业务数据
        采集用户的输入信息和操作

    原则:用户至上,兼顾简洁
    添加类:frmLogin


namespace LoginUI
{
    public partial class frmLogin : Form
    {
        public frmLogin()
        {
            InitializeComponent();
        }

        private void btnLogin_Click(object sender, EventArgs e)
        {
            //UI层将用户输入数据传递给BLL层
            string userName = txtUserName.Text.Trim();
            string password = txtPassword.Text;
            Login.BLL.LoginManager mgr = new Login.BLL.LoginManager();
           Login.Model .UserInfo user= mgr.UserLogin (userName, password);

            //UI层返回业务层传递的数据给用户
           MessageBox.Show("登录用户:" + user.UserName);
        }
    }
}


    2.业务逻辑层(LoginBLL):
    作用:
        从DAL获取数据,提供UI显示
        从UI获取用户和指令,执行业务逻辑
        从UI获取用户和指令,通过DAL写入数据

    BLL的职责机制:
        UI→BLL→UI
        UI→BLL→DAL→BLL→UI  

    添加类:LoginManager
namespace Login.BLL
{
    public class LoginManager
    {
        public Login.Model .UserInfo UserLogin(string userName,string password)
    {
        Login.DAL.UserDAO  uDao = new Login.DAL.u ();   //实例化DAL层
        Login.Model.UserInfo user = uDao.SelectUser(userName, password);

           //不需要访问数据源,直接执行业务逻辑
        if (user != null)
        {
            return user;
        }
        else
        {
            throw new Exception("登录失败");
        }
    }
    }
}


    3.数据访问层(LoginDAL):
    作用:SELECT、INSERT/UPDATE、DELETE
    添加类:UserDAO        
namespace Login.DAL
{
    public class UserDAO
    {
        public Login.Model.UserInfo SelectUser(string userName, string Password)
        {
            //建立数据库连接
            string ConnString = @"Server =192.168.24.45;DataBase =Login; User ID =sa ;Password =123";
            using (SqlConnection conn = new SqlConnection(ConnString))
            {
                //执行SQL语句进行查询
                SqlCommand cmd = conn.CreateCommand();
                cmd.CommandText = @"SELECT ID,UserName,Password,Email 
                                                            FROM UserInfo WHERE UserName =@UserName AND Password =@Password";
                //输出查询结果
                cmd.CommandType = CommandType.Text;

                //添加两个参数
                cmd.Parameters.Add(new SqlParameter(@"UserName", userName));
                cmd.Parameters.Add(new SqlParameter(@"Password", Password));

                conn.Open();
                SqlDataReader reader = cmd.ExecuteReader();

                Login.Model.UserInfo user = null;

                //读取具体的数据
                while (reader.Read())
                {
                    if (user == null)
                    {
                        user = new Login.Model.UserInfo();
                    }
                    //读取查询到的数据
                    user.ID = reader.GetInt32(0);
                    user.UserName = reader.GetString(1);
                    user.Password = reader.GetString(2);
                    if (!reader.IsDBNull(3))
                    {
                        user.Email = reader.GetString(3);
                    }
                }
                return user; 
                }
            }           
        }
    }


    4.实体(LoginModel):
    作用:封装数据,使数据在三层中传输 ,更倾向于业务逻辑层
    添加类:UserInfo
    namespace Login.Model
    {
        public class UserInfo
        {
            //定义用户属性
            public int ID { get; set; }
            public string UserName { get; set; }
            public string Password { get; set; }
            public string Email { get; set; }
        }
    }
分享到:
评论

相关推荐

    三层架构登录(web)

    三层架构是一种常见的...综上所述,这个项目提供了学习三层架构和ASP.NET Web开发的实战案例,涵盖了从用户界面到数据库访问的完整流程,同时也展示了如何利用工厂模式和接口进行设计,使得代码更加灵活和易于维护。

    C#三层架构实战例子

    经典三层架构的案例:业务逻辑层(BLL),数据访问层(DAL),Model层,DBUtility层;适合初学者学习参考。 本例子,可能现在不是很流行,但是对于初学者来说,是一个不错的例子,这段例子是一个完整的项目,只要你的...

    简单工厂以及三层架构

    三层架构是一种常见的软件设计架构,通常用于构建大型企业级应用。这三层包括:表现层(Presentation Layer)、业务逻辑层(Business Logic Layer)和数据访问层(Data Access Layer)。表现层主要处理用户交互,...

    .net基于三层架构

    本教程主要围绕基于.NET的三层架构进行深入探讨,并结合ASP.NET项目实战,帮助开发者提升开发效率和软件质量。 首先,我们要理解三层架构的基本概念。三层架构通常包括表现层(Presentation Layer)、业务逻辑层...

    经典三层架构例子(asp.net)

    【标题】:“经典三层架构例子(asp.net)” 在ASP.NET开发中,三层架构是一种常见的设计模式,它将应用程序逻辑分为三个...通过这些文件,你可以详细研究每个层的实现细节,从而掌握ASP.NET中三层架构的实战应用。

    C#基于三层架构开发的图书借阅管理系统 VS2017 C#+SQLServer

    《C#基于三层架构开发的图书借阅管理系统》是一个典型的软件开发实例,它结合了VS2017集成开发环境和SQLServer数据库系统,为学习C#编程语言以及数据库应用开发的初学者和中级开发者提供了丰富的实践平台。三层架构...

    B2C点卡销售系统完整实例(.NET)

    这个系统采用三层架构设计,包括表现层、业务逻辑层和数据访问层,充分展示了.NET框架在构建企业级应用中的强大能力。 首先,我们要理解什么是B2C(Business-to-Consumer)。B2C是一种电子商业模式,即商家直接面向...

    net 分层架构实战

    在.NET分层架构实战中,我们将通过一系列文章深入探讨如何构建一个基于分层架构的简单留言本系统——NGuestBook。本系列旨在帮助读者理解和掌握分层架构的基本概念及其在实际项目中的应用。 #### 二、需求分析与...

    Web开发新体验_ASP.NET.3.5.MVC架构与实战 书并附源代码

    在架构篇中,循序渐进阐述二层、三层架构原理,彻底解密多层架构开发;在实战篇中,采用asp.net 3.5技术,基于多层架构实现了原创的asp.net 3.5 mvc博客网站,便于初学者学习、运用asp.net 3.5 mvc技术。..  随书所...

    PowerBuilder8.0进阶篇:实例与技巧篇(PDG)

    5. **三层架构(Three-Tier Architecture)**:在后面的章节,书籍会讲解如何使用PB构建三层架构的应用。这种架构模式将数据访问、业务逻辑和用户界面分离,有利于系统的扩展和维护。 6. **COM(Component Object ...

    基于.NET平台的分层架构实战.doc

    【标题】:“基于.NET平台的分层架构实战.doc” 【描述】:该文档是一个关于.NET平台上分层架构的实战教程,作者通过一个简单的留言本系统(NGuestBook)的开发,详细介绍了分层架构的各个层面,包括需求分析、...

    某公司soa管理子系统实例

    综上所述,这个"某公司SOA管理子系统实例"是一个典型的SSH框架应用,它通过SOA的设计思想,将业务逻辑分解为独立的服务,实现了模块化的管理和操作,体现了SOA架构的优势。同时,通过对SSH框架的深入理解和灵活运用...

    58同城高级系统架构师带你实战MongoDB集群分布式存储

    ### MongoDB集群分布式存储实战知识点详解 #### 一、MongoDB简介与应用场景 MongoDB是一款开源的NoSQL数据库系统,以其高性能、高可用性和易扩展性而闻名。它使用JSON-like的文档来存储数据,非常适合处理半结构化...

    架构培训(高级)课件

    - **复杂业务系统的架构设计**:这部分内容涵盖了复杂业务系统架构设计的关键要点与实例分析,帮助参与者掌握处理复杂场景的方法论。 #### 六、学习方法与建议 - **知识的积累与运用**:强调使用已有知识作为基础...

    JAVA 订票系统实例

    本篇将深入探讨一个基于Java编写的订票管理系统,它涵盖了面向对象编程、数据库交互、用户界面设计等多个关键知识点。 首先,我们要理解订票系统的架构。一个基本的订票系统通常包括以下几个核心模块: 1. **用户...

    大规模分布式存储系统原理解析与架构实战大数据技术丛书 电子书 pdf 高清 文字版

    《大规模分布式存储系统原理解析与架构实战》一书深入探讨了在大数据时代,如何设计、构建和管理高效可靠的分布式存储系统。这本书是大数据技术丛书中的一部重要作品,提供了高清的文字版PDF阅读体验,旨在帮助读者...

    三层C—S结构编程指南

    在IT行业中,三层C-S(Client-Server)结构是一种经典的分布式应用架构,广泛应用于大型企业级软件开发。这种结构将应用程序分为三个主要部分:表现层(客户端)、业务逻辑层(服务器端)和数据访问层(数据库)。...

    .net基于三层开发

    总的来说,PetShop4项目作为一个实战案例,深入展示了.NET环境中基于三层架构的软件开发方法,同时结合了设计模式,提升了代码的可读性和可维护性。无论是初学者还是经验丰富的开发者,都可以从中学习到有价值的开发...

Global site tag (gtag.js) - Google Analytics