我今天晚上就看软件的三层开发结构,结构很清晰明了!
首先,三层分表示层+业务逻辑层+数据访问层,一般那些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

4

5

6

7

8

9

10

11

12

13

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

3

4

5

6

7

8

9

10

11

12

13

14

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

4

5

6

7

8

9

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

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

用了存储过程,这里就不说了!
-------------------------------------------------只供参考by Ctamor ---------------------------------------