首页 购物 网址 三丰软件 | 小说 美女秀 图库大全 游戏 笑话 | 下载 开发知识库 新闻 开发 图片素材
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
移动开发 架构设计 编程语言 Web前端 互联网
开发杂谈 系统运维 研发管理 数据库 云计算 Android开发资料
资讯 业界资讯 软件杂谈 编程开发 网站建设 网络观查 搜索引擎 移动应用 网站运营 网络地图
开发 移动开发 Web前端 架构设计 编程语言 互联网 数据库 系统运维 云计算 开发杂谈
[架构设计] 三层架构
三层架构

一、两层架构
我们之前敲写的机房收费系统,均采用的两层架构,两层架构有如下特点:

1)数据库访问和用户类型判断逻辑放在一起实现。
2)用户界面层直接调用数据访问实现。
3)整个系统功能放在同一项目中实现。
传统的两层结构的特点是用户界面层直接与数据库进行交互,还要进行业务规则、合法性校验等工作。两层结构软件模型如图


 
这种结构存在着很多局限性,比如:一旦用户的需求发生变化,应用程序都需要进行大量修改,甚至需要重新开发,给系统的维护和升级带来了极大的不便;用户界面层直接访问数据库,会带来很多安全隐患。为了克服两层结构的局限性提出了三层结构
二、三层架构
所谓三层体系结构,是在客户端与数据库之间加入了一个“中间层”,也叫组件层。
三层架构(3-tier application) 通常意义上的三层架构就是将整个业务应用划分为:表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL)。区分层次的目的即为了“高内聚,低耦合”的思想。
其结构如图所示


(1)表现层(UI
通俗讲就是展现给用户的界面,即用户在使用一个系统的时候他的所见所得。
如在机房收费系统中,登陆界面就属于UI层



登陆界面代码
 <span style="white-space:pre">	</span>private void btnLogin_Click(object sender, EventArgs e)
        <span style="white-space:pre">	</span>{
        <span style="white-space:pre">	</span>    string userName = txtUsername.Text.Trim();
          <span style="white-space:pre">	</span>    string password = txtPassword.Text;
           <span style="white-space:pre">	</span>    Login.BLL.LoginManager mgr = new Login.BLL.LoginManager();
           <span style="white-space:pre">	</span>    Login.Model.UserInfo user=mgr.UserLogin(userName, password);

            <span style="white-space:pre">	</span>    MessageBox.Show("登陆用户:"+user.UserName );
        <span style="white-space:pre">	</span>}
UI作用:如以上代码所示,登陆端不承担访问数据源和处理任何数据的任务,只采集用户输入的信息,将信息传递给业务逻辑层,由业务逻辑层进行处理。
UI设计的原则:用户至上,兼顾简洁。
(2)业务逻辑层(BLL)
针对具体问题的操作,也可以说是对数据层的操作,对数据业务逻辑处理。
BLL作用:主要承担了承上启下的作用:
1)从DAL中获取数据,以供UI使用
2)从UI中获取用户指令和数据,执行业务逻辑。
3)从UI中获取用户指令和数据,通过DAL写入数据源。
如从登陆界面(UI层)获取登陆用户名和密码后交给BLL层处理数据。
其代码如下
<span style="white-space:pre">	</span>public class LoginManager
    <span style="white-space:pre">	</span>{
        <span style="white-space:pre">	</span>public Login.Model.UserInfo UserLogin(string username,string password)
        <span style="white-space:pre">	</span>{
            <span style="white-space:pre">		</span>throw new NotImplementedException();
            <span style="white-space:pre">		</span>Login.DAL.UserDao uDao = new Login.DAL.UserDao();
            <span style="white-space:pre">		</span>Login.Model.UserInfo user= uDao.SelectUser(username, password);

            <span style="white-space:pre">		</span>if(user !=null)
            <span style="white-space:pre">		</span>{
               <span style="white-space:pre">		</span> Login.DAL.ScoreDao sDao = new Login.DAL.ScoreDao();
                <span style="white-space:pre">	</span> sDao.UpdateScore(username, 10);
                <span style="white-space:pre">	</span> return user;
            <span style="white-space:pre">		</span>}
            <span style="white-space:pre">		</span>else
            <span style="white-space:pre">		</span>{
                <span style="white-space:pre">	</span>throw new Exception("登陆失败");
            <span style="white-space:pre">		</span>}
        <span style="white-space:pre">	</span>}
   <span style="white-space:pre">	</span> }
BLL职责机制:
UI→BLL→UI
UI→BLL→DAL→BLL→UI
(3)数据访问层(DAL)
该层所做事务直接操作数据库,针对数据的增添、删除、修改、更新、查找等。
DAL作用:
从数据源加载、写入、删除数据。
在登陆界面中其代码如下
<span style="white-space:pre">	</span>public class UserDao
    <span style="white-space:pre">	</span>{
        <span style="white-space:pre">	</span>public  Login.Model.UserInfo SelectUser(string userName,string password)
        <span style="white-space:pre">	</span>{
           <span style="white-space:pre">	</span>using (SqlConnection conn = new SqlConnection(DbUntil.ConnString))
           <span style="white-space:pre">	</span>{
               <span style="white-space:pre">		</span>SqlCommand cmd = conn.CreateCommand();
               <span style="white-space:pre">		</span>cmd.CommandText = @"SELECT ID,UserName,Password,Emai
                                   FROM USERS WHERE UserName=@UserName AND Password=@Password";
               <span style="white-space:pre">		</span>cmd.CommandType = CommandType.Text;
               <span style="white-space:pre">		</span>cmd.Parameters.Add(new SqlParameter("@UserName", userName));
               <span style="white-space:pre">		</span>cmd.Parameters.Add(new SqlParameter("@Password", password));

               <span style="white-space:pre">		</span>conn.Open();
               <span style="white-space:pre">		</span>SqlDataReader reader = cmd.ExecuteReader();

               <span style="white-space:pre">		</span>Login.Model.UserInfo user = null;
               <span style="white-space:pre">		</span>while (reader.Read())
               <span style="white-space:pre">		</span>{
                   <span style="white-space:pre">	</span>if(user ==null)
                   <span style="white-space:pre">	</span>{
                       <span style="white-space:pre">	</span>user = new Login.Model.UserInfo();
                   <span style="white-space:pre">	</span>}
                   <span style="white-space:pre">	</span>user.ID= reader.GetInt32(0);
                   <span style="white-space:pre">	</span>user.UserName = reader.GetString(1);
                   <span style="white-space:pre">	</span>user.Password = reader.GetString(2);
                   <span style="white-space:pre">	</span>if(!reader.IsDBNull(3))
                   <span style="white-space:pre">	</span>{
                       <span style="white-space:pre">	</span>user.Email = reader.GetString(3);
                   <span style="white-space:pre">	</span>}
                   <span style="white-space:pre">	</span>return user;
               <span style="white-space:pre">		</span>}
           <span style="white-space:pre">	</span>}
        <span style="white-space:pre">	</span>}
    <span style="white-space:pre">	</span>}
三层优缺点:

优缺点
优点
   1、开发人员可以只关注整个结构中的其中某一层;
   2、可以很容易的用新的实现来替换原有层次的实现;
   3、可以降低层与层之间的依赖;
   4、有利于标准化;
   5、利于各层逻辑的复用。
缺点
   1、降低了系统的性能。这是不言而喻的。如果不采用分层式结构,很多业务可以直接造访数据库,以此获取相应的数据,如今却必须通过中间层来完成。
   2、有时会导致级联的修改。这种修改尤其体现在自上而下的方向。如果在表示层中需要增加一个功能,为保证其设计符合分层式结构,可能需要在相应的业务逻辑层和数据访问层中都增加相应的代码。


 此文从网络中自动搜索生成,不代表本网站赞成被搜索网站的内容或立场    查看原文
360图书馆 软件开发资料 文字转语音 购物精选 软件下载 美食菜谱 新闻资讯 电影视频 小游戏 Chinese Culture 股票 租车
生肖星座 三丰软件 视频 开发 短信 中国文化 网文精选 搜图网 美图 阅读网 多播 租车 短信 看图 日历 万年历 2018年7日历
2018-7-22 14:58:34
 
  网站联系 软件世界网-www.sjsjw.com ©2014 蜀ICP备06016416号 三峰网旗下网站