资源预览内容
亲,该文档总共9页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
上课日志20171110一、三层架构的基本概念和作用1、前三章开发实例的优缺点前三章我们讲解了实例2-1学生信息的增删改查、实例2-2文章阅读器的实现、实例3-3通过一般处理程序及SqlHelper工具类实现对数据库的增删改查,它们的共同特点都是用户界面层直接或者通过SqlHelper工具类直接对数据库进行操作并把结果直接返回到用户界面。效率高,但系统大、界面多、代码多的情况下是不便于代码管理及后期维护的。为什么?形象比喻:2、三层架构的形象理解三层架构/多层架构就是使整个程序的逻辑结构更加清晰、便于代码的管理有利于系统的维护和扩展。笑话:有个村长得意地向他老婆吹牛:“全中国只有四个人比我官大,乡长、县长、省长和国务院总理”。这个笑话也体现了真实社会中分层的现象。社会人群会分层,公司人员结构也会分层,楼房是分层的,甚至做包子的笼屉都是分层的。虽然分层的目的各有不同,但都是为解决某一问题而产生的。所以,分层架构其实是为了解决某一问题而产生的一种解决方案。 从社会的发展来看,社会分工是人类进步的表现 。社会分工的优势就是让适合的人做自己擅长的事情,使平均社会劳动时间大大缩短。3、通常三层架构分为哪三层三层架构就是在项目开发过程中根据代码的不同功能,分别对代码进行存储与调用。通常分为表现层、业务逻辑层、数据访问层,这三层如何理解?如右图所示。表现层(UI层User Interface layer):主要用于存放与用户交互的展示页面(主要实现和用户的交互,接收用户请求或返回用户请求的数据结果的展现,而具体的数据处理则交给业务逻辑层和数据访问层去处理)业务逻辑层(BLL层Business Logic Layer):主要用于存放针对具体问题对数据进行逻辑处理的代码,业务逻辑层承上启下数据访问层(DAL层Data access layer):主要用于存放对原始数据进行操作的代码,它封装了所有与数据库交互的操作,并为业务逻辑层提供数据服务 二、三层架构的趣味理解(三层架构与养猪)及三层架构的优缺点1、趣味理解(三层架构与养猪)2、三层架构的优点和缺点优 点 缺 点代码结构清晰增加了开发成本耦合度降低,可维护性和可扩展性提高降低了系统的性能适应需求的变化,降低维护的成本和时间在表现层中增加一个功能,为保证其设计符合分层式结构,就需要在相应的业务逻辑层和数据访问层中都增加相应的代码三、三层架构的登录功能(实例4-1)搭建三层项目基本结构1、实例功能展示通过完整源代码展示2、数据库创建及说明ItcastUserLogin(id为自动增长)3、搭建三层项目基本结构(1)新建解决方案Module4,同时添加数据访问层(类库)Lesson1DAL(2)右击解决方案Module4,添加业务逻辑层(类库)Lesson1BLL(3)右击解决方案Module4,添加表现层(ASP.NET空web应用程序)Lesson1UI四、为实例4-1实现数据访问层功能1、右击解决方案Module4,添加实体模型层(类库)Model在实际开发中往往会有大量的数据需要处理,所以通常都会在项目中创建一个数据库实体模型层。(实例2-2文章阅读器创建过)2、在Model层中添加表实体类即添加“UserLogin.cs”类文件对应数据库表UserLogin,所以也叫表实体类。可以这样理解 实体类作为数据容器,在层间传递注意:类加public修饰符、自动属性的理解、自动生成的Class1.cs类可以删除3、在数据访问层Lesson1DAL中添加对数据实体模型层Modle的引用右击Lesson1DAL层的引用添加引用,右侧选择解决方案,再选择到Model。4、在Lesson1DAL中创建UserLoginDal.cs类文件,为该类添加SelectUserLogin()方法,用于查询与用户名相对应的数据注意/提问:(1)前面仅仅添加了引用Modle还不够,还要在Lesson1DAL层的类文件中添加相应类所在的命名空间(Modle)(2)把工具类SqlHelper复制到Lesson1DAL层中,并添加引用System.Configuration和添加命名空间using System.Configuration、SqlHelper所在命名空间(3)在表现层的Web.Config文件中增加连接数据库字符串5、核心代码public class UserLoginDal/注意:需要添加public修饰符,否则其他层访问不到 public UserLogin SelectUserLogin(string UserName) string sql = select * from UserLogin where userName=userName; SqlParameter para = new SqlParameter(userName, UserName); UserLogin user = null; using (SqlDataReader reader = SqlHelper.ExecuteReader(sql, para) if (reader.Read() user = new UserLogin(); user.ID = reader.GetInt32(0); user.UserName = reader.GetString(1); user.Pwd = reader.GetString(2); return user; 以上代码根据用户名进行查找用户,并把查找到的用户信息封装到UserLogin对象。提问:如果user为null说明什么?五、为实例4-1实现业务逻辑层功能1、为业务层添加引用在Lesson1DAL层中获取到数据库中的数据后,接下来就可以在LessonBLL业务逻辑层来调用数据访问层返回的数据,并返回给UI层。也即业务逻辑层要对数据访问层进行访问。因此要在业务层添加对数据访问层的引用,同时还要添加对Model层的引用。2、核心代码public class UserLoginBll private UserLoginDal dal = new UserLoginDal(); public UserLogin GetUserLogin(string UserName) return dal.SelectUserLogin(UserName); 分析层之间是如何的调用。提示:当一个层调用另一个层中的方法时,需要添加方法所在层的引用。六、为实例4-1实现表现层布局1、在表现层Lesson1UI层中添加web窗体Login.aspx2、前台基本布局 管理员登录 用户名: 密码: 3、CSS样式 #divLogin width:358px; height:276px; background-image:url(Image/DIVBackGroundImage.png); position:absolute; left:50%; top:50%; margin-top:-138px; margin-left:-179px; #tab width:100%; height:100%; .td1 height: 110px; color:white; font-size:22px; font-family:微软雅黑; .td2 height: 45px; width:120px; color:white; font-size:18px; font-family:微软雅黑; text-align:right; .td3 text-align:center; 4、浏览查看效果把表现层Lesson1UI设置为启动项,并设置相关页为起始页,即可启动观看效果,当然最好还是右击相应aspx页面,选择在浏览器中查看。七、为实例4-1实现表现层功能1、添加引用表现层调用业务逻辑层。所以先添加对业务层和实体模型层的引用及引入相应的命名空间。2、主要代码public UserLoginBll bll = new UserLoginBll();
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号