[ASP.NET 개발] ASP.***

12572 단어
MVC를 한 번 사용해 팀 개발을 한 후부터 대상을 대상으로 소프트웨어를 개발하는 편리함을 느꼈다.MVC를 사용할 때 각 층 간의 낮은 결합은 그들 간의 관계를 매우 나쁘게 하고 모듈 간의 의존도를 낮춘다.
먼저 MVC의 의미와 각 측면 간의 용도와 기능을 소개한다.
1) 솔리드 레이어주로 보기층과 업무 논리층 사이에서 데이터를 전달하는 캐리어를 설명하는 데 쓰인다.일반적으로 출처와 프로젝트 데이터베이스에 있는 하나 이상의 표로 구성된 의미 있는 기록을 대표한다.
2) 업무 논리층.업무 논리에 따라 시각층에 데이터를 제공하면 이 프로젝트의 클래스는 업무 논리에 따라 데이터베이스 접근층을 호출할지 여부를 결정할 권리가 있다
3) 데이터베이스 액세스 레이어항목 업무 논리층이 데이터에 접근하는 방법을 제공합니다.
4) 뷰 레이어주로 사이트 개발을 예로 들 수 있다.디스플레이, 추가, 편집, 삭제를 제공합니다.
VS에서 작성한 프로젝트의 맵:
NetMVC는 뷰 레이어입니다.Entity는 개발 과정에서 사용할 모든 변수를 선언하는 솔리드 레이어입니다.DAL은 데이터베이스 액세스 계층으로, 주로 모든 작업을 수행하여 데이터베이스에 액세스합니다.BLL은 비즈니스로직 계층으로, 뷰포트에서 전송되는 비즈니스로직을 처리한 다음 데이터베이스 액세스 계층에 전달하여 처리합니다.
이 예제에서는 로그인 페이지의 구현을 보여 줍니다. Entity 레이어의 코드는 다음과 같습니다.
using System;
using System.Collections.Generic;
using System.Text;

namespace Entity
{
    public class UserInfo
    {
        private int UserId;

        /// 
        ///      
        /// 
        public int UserId1
        {
            get { return UserId; }
            set { UserId = value; }
        }
        private string username;

        /// 
        ///       
        /// 
        public string Username
        {
            get { return username; }
            set { username = value; }
        }

        private string password;

        /// 
        ///     
        /// 
        public string Password
        {
            get { return password; }
            set { password = value; }
        }
        private int loginCount;

        /// 
        ///     
        /// 
        public int LoginCount
        {
            get { return loginCount; }
            set { loginCount = value; }
        }
        private DateTime regDate;

        /// 
        ///     
        /// 
        public DateTime RegDate
        {
            get { return regDate; }
            set { regDate = value; }
        }
        private DateTime lastLoginDate;

        /// 
        ///       
        /// 
        public DateTime LastLoginDate
        {
            get { return lastLoginDate; }
            set { lastLoginDate = value; }
        }
        private bool isForbidden;
        private string passwordQuestion;

        /// 
        ///         
        /// 
        public string PasswordQuestion
        {
            get { return passwordQuestion; }
            set { passwordQuestion = value; }
        }
        private string passwordAnswer;

        /// 
        ///       
        /// 
        public string PasswordAnswer
        {
            get { return passwordAnswer; }
            set { passwordAnswer = value; }
        }


    }
}

실체 클래스에 대한 창설을 완성하고 데이터베이스 접근층에 대한 창설을 완성해야 한다(그 중에서 앞의 문장에서 쓴 SqlHelper 데이터베이스에서 일반 클래스에 접근해야 한다.http://blog.csdn.net/yisuowushinian/article/details/7999305), 코드는 다음과 같습니다.
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using Entity;

namespace DAL
{
    public class UserDal
    {
        private string connectionString = ConfigurationManager.ConnectionStrings["connectionString"].ConnectionString;

        /// 
        ///     
        /// 
        ///       
        /// 
        public bool AddUser(UserInfo info)
        {
            string sql = "insert into Users(Username,password) values('@Username','@password')";
            SqlParameter[] parameters = new SqlParameter[4];
            parameters[0] = new SqlParameter("@Username", SqlDbType.NVarChar, 30);
            parameters[0].Value = info.Username;

            parameters[1] = new SqlParameter("password", SqlDbType.VarChar, 50);
            parameters[1].Value = info.Password;


            return new SqlDbHelper(connectionString).ExecuteNonQuery(sql) > 0;
        }

        /// 
        ///     
        /// 
        ///     
        /// 
        public bool DeleteUser(int UserId)
        {
            string sql = "delete from users where UserId=" + UserId;
            return new SqlDbHelper(connectionString).ExecuteNonQuery(sql) > 0;
        }

        /// 
        ///     
        /// 
        ///       
        /// 
        public bool UpDateUser(UserInfo info)
        {
            string sql = "update users set password=@password,loginCount=@loginCount where userid=@userid";
            SqlParameter[] parameters = new SqlParameter[7];
            parameters[0] = new SqlParameter("@password", SqlDbType.VarChar, 30);
            parameters[0].Value = info.Password;

            parameters[1] = new SqlParameter("@loginCount", SqlDbType.Int, 4);
            parameters[1].Value = info.LoginCount;

            return new SqlDbHelper(connectionString).ExecuteNonQuery(sql) > 0;
        }

        /// 
        ///                
        /// 
        ///     
        /// 
        public DataTable GetUser(int userId)
        {
            string sql = "select * from users where userId=@UserId";
            SqlParameter[] parameters = new SqlParameter[1];
            parameters[0] = new SqlParameter("@UserId", SqlDbType.Int, 4);
            parameters[0].Value = userId;
            return new SqlDbHelper(connectionString).ExecuteDataTable(sql, CommandType.Text, parameters);
        }

        /// 
        ///            
        /// 
        ///    
        /// 
        public DataTable GetUser(string Username)
        {
            string sql = "select * from users where username=@username";
            SqlParameter[] parameters = new SqlParameter[1];
            parameters[1] = new SqlParameter("@username", SqlDbType.NVarChar, 30);
            parameters[1].Value = Username;

            return new SqlDbHelper(connectionString).ExecuteDataTable(sql, CommandType.Text, parameters);
        }

        /// 
        ///                         
        /// 
        ///        
        ///          
        /// 
        public DataTable GetUserList(int startIndex, int size)
        {
            string sql = "select top " + size + " * from users where UserId not in (select top " + startIndex + " UserId from Users order by UserId asc)order by UserId asc";
            return new SqlDbHelper(connectionString).ExecuteDataTable(sql);
        }

        /// 
        ///       
        /// 
        /// 
        public int GetUserCount()
        {
            string sql = "select count(1) from Users";
            return int.Parse(new SqlDbHelper(connectionString).ExecuteScalar(sql).ToString());
        }
    }
}

그런 다음 다음과 같은 비즈니스 논리 레이어를 생성합니다.
using System;
using System.Collections.Generic;
using System.Text;

using DAL;
using Entity;
using System.Data;
using System.Data.SqlClient;
using System.Security.Cryptography;
using System.Security;

namespace BLL
{
    public class UserBLL
    {
        private static string MD5Hash(string password)
        {
            MD5 md5 = MD5.Create();//  Md5    
            //         UTF-8       
            byte[] sourceBytes = System.Text.Encoding.UTF8.GetBytes(password);
            //          
            byte[] resultBytes = md5.ComputeHash(sourceBytes);
            StringBuilder buffer = new StringBuilder(resultBytes.Length);
            //                              
            foreach (byte b in resultBytes)
            {
                buffer.Append(b.ToString("X"));

            }
            return buffer.ToString();
        }

        /// 
        ///     
        /// 
        ///       
        /// 
        public static bool AddUser(UserInfo info)
        {
            UserDal dal = new UserDal();
            DataTable data = dal.GetUser(info.Username);
            if (data.Rows.Count > 0)
            {
                return false;
            }
            else
            {
                info.Password =MD5Hash (info.Password);
                return new UserDal().AddUser(info);
            }
        }

        /// 
        ///     
        /// 
        ///     
        /// 
        public static bool DeleteUser(int userId)
        {
            return new UserDal().DeleteUser(userId);
        }

        /// 
        ///     
        /// 
        ///       
        ///              
        /// 
        public static bool UpdateUser(UserInfo info, bool changePassword)
        {
            //                 
            //                  ,            
            if (changePassword)
            {
                info.Password = MD5Hash(info.Password);
            }
            return new UserDal().UpDateUser(info);
        }

        /// 
        ///           
        /// 
        ///      
        /// 
        public static DataTable GetUser(int UserId)
        {
            return new UserDal().GetUser(UserId);
        }

        /// 
        ///            
        /// 
        ///    
        /// 
        public static DataTable GetUser(string userName)
        {
            return new UserDal().GetUser(userName);
        }

        /// 
        ///                          
        /// 
        ///        
        ///          
        /// 
        public static DataTable GetUserList(int startIndex, int size)
        {
            return new UserDal().GetUserList(startIndex, size);
        }

        /// 
        ///       
        /// 
        /// 
        public static int GetUserCount()
        {
            return new UserDal().GetUserCount();
        }

        /// 
        ///                         ,        null
        /// 
        ///     
        /// 
        public static UserInfo GetUserEntity(int userId)
        {
            return ChangeToEntity(new UserDal().GetUser(userId));
        }

        /// 
        ///                         ,        null
        /// 
        ///    
        /// 
        public static UserInfo GetUserEntity(string userName)
        {
            return ChangeToEntity(new UserDal().GetUser(userName));
        }

        /// 
        ///    Users    DataTables          Userinfo  
        /// 
        /// 
        /// 
        private static UserInfo ChangeToEntity(DataTable data)
        {
            UserInfo info = null;
            //  data              0、
            if (data!=null&&data.Rows.Count > 0)
            {
                DataRow row = data.Rows[0];
                info = new UserInfo();

            }
            return info;
        }

        public static bool Login(string userName, string password)
        {
            bool exits = false;
            UserInfo info = GetUserEntity(userName);

            if (info != null && MD5Hash(password) == info.Password)
            {
                exits = true;
                info.LoginCount = info.LoginCount + 1;//         1
                info.LastLoginDate = DateTime.Now;//               
                UpdateUser(info, false);//                 
            }
            return exits;
        }
    }
}

이것은 데이터베이스 접근층, 실체층, 업무 논리층에 대한 창설 작업을 완성했다.창설 과정에서 많은 중복된 작업이 있었기 때문에 나는 속도를 높이기 위해 코드를 생략했다.
로그인 페이지에서 사용할 때 업무 논리층을 도입하는 방법만 있으면 그 방법에 따라 해당하는 매개 변수를 전송하면 모든 조작을 완성할 수 있다.
판권 성명: 본고는 블로거의 오리지널 문장으로 블로거의 허락 없이 전재할 수 없습니다.
전재 대상:https://www.cnblogs.com/yisuowushinian/archive/2012/09/27/4715648.html

좋은 웹페이지 즐겨찾기