zoukankan      html  css  js  c++  java
  • 三层结构、分布式系统开发!!!

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

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

  • 相关阅读:
    Android 程序员不得不收藏的个人博客(持续更新...)
    硬核讲解 Jetpack 之 LifeCycle 源码篇
    秉心说,不一样的 2019
    秉心说 2019 博文合集
    庖丁解牛 Activity 启动流程
    Jetpack Compse 实战 —— 全新的开发体验
    Box 黑科技 —— 支持手机端反编译 !
    “无处不在” 的系统核心服务 —— ActivityManagerService 启动流程解析
    如何正确的在 Android 上使用协程 ?
    【Medium 万赞好文】ViewModel 和 LIveData:模式 + 反模式
  • 原文地址:https://www.cnblogs.com/chentao/p/580314.html
Copyright © 2011-2022 走看看