三层结构、分布式系统开发!!!

我今天晚上就看软件的三层开发结构,结构很清晰明了!

首先,三层分表示层+业务逻辑层+数据访问层,一般那些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

登陆的业务逻辑层:

 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

调用了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

登陆的数据访问层:

 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

用了存储过程,这里就不说了!

-------------------------------------------------只供参考by Ctamor ---------------------------------------

原文地址:https://www.cnblogs.com/chentao/p/580314.html