我今天晚上就看软件的三层开发结构,结构很清晰明了!
首先,三层分表示层+业务逻辑层+数据访问层,一般那些N层结构可以笼统的也称为三层!举个简单的企业级的项目简单例子来说明,也便自己确定自己到底理解得如何!
应用层--->业务逻辑层--->数据访问层
举个登陆例子:先说明:为了达到分布式开发,把各个层用各用一个项目,即:WEB(表示层),BLL(业务逻辑层),DAL(数据访问层),另加一个公共操作的方法从业务逻辑层提取再建一个项目Common项目。
登陆的表示层:
1/// <summary>
2 /// 登陆提交处理
3 /// </summary>
4 /// <param name="sender"></param>
5 /// <param name="e"></param>
6 private void btnlogin_Click(object sender, System.EventArgs e)
7 {
8 string strUserName = this.username.Text.Trim(); //登陆用户名
9 string strPassWord = this.password.Text.Trim(); //登陆密码
10 //接受登陆结果
11 ArrayList LoginResult=new ArrayList();
12 //调用业务逻辑支持
13 BLL.BLL_Login BLLLogin=new BLL.BLL_Login();
14
15 }
16
17
2 /// 登陆提交处理
3 /// </summary>
4 /// <param name="sender"></param>
5 /// <param name="e"></param>
6 private void btnlogin_Click(object sender, System.EventArgs e)
7 {
8 string strUserName = this.username.Text.Trim(); //登陆用户名
9 string strPassWord = this.password.Text.Trim(); //登陆密码
10 //接受登陆结果
11 ArrayList LoginResult=new ArrayList();
12 //调用业务逻辑支持
13 BLL.BLL_Login BLLLogin=new BLL.BLL_Login();
14
15 }
16
17
登陆的业务逻辑层:
1//调用对此类的数据访问支持类
2 private DAL.DAL_Login DALLogin = new DAL.DAL_Login();
3 /// <summary>
4 /// 检查用户是否有访问本系统的权限
5 /// </summary>
6 /// <param name="strUserName">用户名</param>
7 /// <param name="strPassWord">密码</param>
8 /// <returns>返回验证结果(以数据列表方式返回用户用户名和角色号)</returns>
9 public ArrayList CheckLogin(string strUserName,string strPassWord)
10 {
11 //系统密码采用md5非对称加密方式
12 strPassWord=Common.MD5.Execate(strPassWord);
13 //调用数据访问层的验证功能支持
14 return DALLogin.CheckLogin(strUserName,strPassWord);
15
16
17 }
18
19
2 private DAL.DAL_Login DALLogin = new DAL.DAL_Login();
3 /// <summary>
4 /// 检查用户是否有访问本系统的权限
5 /// </summary>
6 /// <param name="strUserName">用户名</param>
7 /// <param name="strPassWord">密码</param>
8 /// <returns>返回验证结果(以数据列表方式返回用户用户名和角色号)</returns>
9 public ArrayList CheckLogin(string strUserName,string strPassWord)
10 {
11 //系统密码采用md5非对称加密方式
12 strPassWord=Common.MD5.Execate(strPassWord);
13 //调用数据访问层的验证功能支持
14 return DALLogin.CheckLogin(strUserName,strPassWord);
15
16
17 }
18
19
调用了Common的MD5加密方法:
1/// <summary>
2 /// 执行双重加密技术
3 /// </summary>
4 /// <param name="Content">加密的内容</param>
5 /// <returns>加密生成的密文</returns>
6 public static string Execate(string Content)
7 {
8 string ReContent = System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(Content,"md5");
9 return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(ReContent,"md5");
10
11 }
12
13
2 /// 执行双重加密技术
3 /// </summary>
4 /// <param name="Content">加密的内容</param>
5 /// <returns>加密生成的密文</returns>
6 public static string Execate(string Content)
7 {
8 string ReContent = System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(Content,"md5");
9 return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(ReContent,"md5");
10
11 }
12
13
登陆的数据访问层:
1/// <summary>
2 ///验证用户登陆
3 /// </summary>
4 /// <param name="strUserName">用户名</param>
5 /// <param name="strPassWord">密码</param>
6 /// <returns>返回登陆结果及角色号</returns>
7 public ArrayList CheckLogin(string strUserName,string strPassWord)
8 {
9
10 SqlCommand Com=new SqlCommand("CheckLogin",Con);
11 Com.CommandType=CommandType.StoredProcedure;
12
13 //添加参数
14 SqlParameter UserName=new SqlParameter("@UserName",SqlDbType.VarChar,80);
15 UserName.Value=strUserName;
16 Com.Parameters.Add(UserName);
17
18 SqlParameter PassWord=new SqlParameter("@PassWord",SqlDbType.VarChar,80);
19 PassWord.Value=strPassWord;
20 Com.Parameters.Add(PassWord);
21
22 SqlParameter Result=new SqlParameter("@Result",SqlDbType.VarChar,80);
23 Result.Direction=ParameterDirection.Output;
24 Com.Parameters.Add(Result);
25
26 SqlParameter GroupID=new SqlParameter("@GroupID",SqlDbType.VarChar,8);
27 GroupID.Direction=ParameterDirection.Output;
28 Com.Parameters.Add(GroupID);
29
30 Con.Open();
31 Com.ExecuteNonQuery();
32 Con.Close();
33
34 ArrayList Value=new ArrayList();
35
36 //添加用户名
37 Value.Add(strUserName);
38 //添加登陆结果
39 Value.Add(Result.Value);
40 //添加角色编号
41 Value.Add(GroupID.Value);
42
43 return Value;
44 }
45
46
2 ///验证用户登陆
3 /// </summary>
4 /// <param name="strUserName">用户名</param>
5 /// <param name="strPassWord">密码</param>
6 /// <returns>返回登陆结果及角色号</returns>
7 public ArrayList CheckLogin(string strUserName,string strPassWord)
8 {
9
10 SqlCommand Com=new SqlCommand("CheckLogin",Con);
11 Com.CommandType=CommandType.StoredProcedure;
12
13 //添加参数
14 SqlParameter UserName=new SqlParameter("@UserName",SqlDbType.VarChar,80);
15 UserName.Value=strUserName;
16 Com.Parameters.Add(UserName);
17
18 SqlParameter PassWord=new SqlParameter("@PassWord",SqlDbType.VarChar,80);
19 PassWord.Value=strPassWord;
20 Com.Parameters.Add(PassWord);
21
22 SqlParameter Result=new SqlParameter("@Result",SqlDbType.VarChar,80);
23 Result.Direction=ParameterDirection.Output;
24 Com.Parameters.Add(Result);
25
26 SqlParameter GroupID=new SqlParameter("@GroupID",SqlDbType.VarChar,8);
27 GroupID.Direction=ParameterDirection.Output;
28 Com.Parameters.Add(GroupID);
29
30 Con.Open();
31 Com.ExecuteNonQuery();
32 Con.Close();
33
34 ArrayList Value=new ArrayList();
35
36 //添加用户名
37 Value.Add(strUserName);
38 //添加登陆结果
39 Value.Add(Result.Value);
40 //添加角色编号
41 Value.Add(GroupID.Value);
42
43 return Value;
44 }
45
46
用了存储过程,这里就不说了!
-------------------------------------------------只供参考by Ctamor ---------------------------------------