视频课堂https://edu.csdn.net/course/play/7621

C#程序设计及宿舍管理系统实战  

C#程序设计与宿舍管理系统实战-c#宿舍管理系统,c#学生宿舍管理系统-C#视频教程-后端开发-CSDN程序员研修院

1.1          三层架构简介

假如你在经营一个大饭店,大体上你会请三方面的人,一方面是负责饭店服务的服务员,一方面是负责烹饪、做饭的厨师,一方面是负责饭店蔬菜、肉类、调料等的采购员。

如果你这样做了,那么饭店管理起来,就好比较好管理(简单来说)。比如任何一方面的员工出现请假或离职的情况,可以找其他的服务员、厨师或采购员代替。

在企业中这种职责分离、业务独立的部门划分方法对于管理企业有很大的好处,同样在程序中也需采用“职责分离、业务独立的”的原则划分模块,更好的实现“高内聚、低耦合”的软件设计思想。

1.2为什么要使用三层架构

        那么我们为什么要使用分层开发呢,它有什么独特的优势呢?

.NET开发平台为我们做开发提供了强大的技术支持,使我们的开发变得非常便捷,高效。通过code behind的强大支持,我们可以将页面设计和代码设计有效的分离,代码编写,页面设计同时进行。

的确,仅从功能实现的基础来说我们已经做得很好了,尤其对于一个简单的应用来说,代码量不是很多的情况下,这种一层结构开发完全够用了,没有必要搞得那么复杂。但是对一个复杂的大型系统来说这样的设计的缺陷就很严重了。

在开发过程中我们会不停把代码到处复制,以实现一些相似的功能。同样的代码为什么要写那么多次?不但使程序变得冗长,更不利于维护,一个小小的修改或许会波及很多页面。稍微不留神就会导致异常的产生,使程序不能正常运行。最主要的面向对象的思想没有得到丝毫的体现,打着面向对象的幌子却依然走着面向过程的老路。

意识到这样的问题,我开始将程序中一些公用的处理程序写成公共方法封装在类中,供其它程序调用。象一些功能型的代码集合,数据库操作,如同SqlHelper那样对数据操作进行合理封装,把sql语句,参数列表作为参数,在数据库操作过程中,只要传入相应的参数就可以完成特定的数据操作,这就是我一开始的数据访问层,再不用每次操作数据库时都写那些重复性的数据库操作代码。在新的应用开发中,数据访问层可以直接拿来用。

面向对象的三大特性之一的封装性在这里得到了很好的体现。似乎找到了面向对象的感觉,代码量较以前有了很大的减少,而且修改的时候也比较方便。这下应该可以了吧?

试问一下,如果有一天数据库供应商发生了变化,因为数据量的增加,数据库有access变成了sql server?这下麻烦大了,原来的数据访问层失效了,数据操作对象发生了变化,且页面中涉及数据对象的地方也要进行修改,因为原来可能会使用OleDbDataReader对象将数据传递给显示页面,现在都得换成SqlDataReader对象,sql和access支持的数据类型也不一致,在显示数据时进行的数据转换可能也要进行修改。由sql向access的转换所做的修改会更多。

还有一种情况,因为某种需要,我们要把Web形式的项目改造成windows应用,这时牵涉的修改有多大呢?如果在你的aspx.cs中放了很多处理代码,或者还有一部分代码存在于aspx中呢windows应用中可没有aspx阿,是不是整个系统需要重新来做了?这都是设计不合理惹的祸。

   1.3          三层架构的构成

我们通常说的三层架构包含表示层、业务层和数据层三层,对于应用系统来说,表示层和用户交互并显示数据,业务层负责访问数据层并向表示层提交数据,数据层负责数据的存储。下面来详细阐述三层架构的含义及其组成:

n       表示层

它主要是指与用户交互的界面,它接收用户的输入,但并不包括任何实际的业务处理,它只是简单地讲数据转交给业务层,同时负责展现业务层传递过来的数据,当后台业务逻辑更新时,表示层就会显示这些更新。表示层提供应用程序的用户界面(UI),通常包括Windows窗体、Asp.NetWeb窗体。

n       业务层

它代表了应用程序的核心功能,负责处理数据层的数据,实现业务逻辑,用于实现某种规则的业务处理以匹配特定公司的需要。例如,确定某个指定客户是否被批准进行某项借贷活动的业务规则可以封装在小型解决方案的客户业务组件中。对于大型解决方案,所有与借贷有关的业务逻辑可能都封装在单独的一个借贷组件中。

n       数据层

数据访问层:有时候也称为是持久层,其功能主要是负责数据库的访问,可以访问数据库系统、二进制文件、文本文档或是XML文档。简单的说法就是实现对数据表的Select,Insert,Update,Delete的操作。如果要加入ORM的元素,那么就会包括对象和数据表之间的mapping,以及对象实体的持久化。

将三层架构与饭店的各个人员层相比较的图如下:

三层结构的优点

1)从开发角度和应用角度来看,三层架构比双层或单层结构都有更大的优势。三层结构适合群体开发,每人可以有不同的分工,协同工作使效率倍增。开发双层或单层应用时,每个开发人员都应对系统有较深的理解,能力要求很高,开发三层应用时,则可以结合多方面的人才,只需少数人对系统全面了解,从一定程度工降低了开发的难度

2)三层架构可以更好的支持分布式计算环境。逻辑层的应用程序可以有多个机器上运行,充分利用网络的计算功能。分布式计算的潜力巨大,远比升级CPU有效。美国人曾利用分式计算解密,几个月就破解了据称永远都破不了的密码

3)也是三层架构的最大优点是它的安全性。用户端只能通过逻辑层来访问数据层,减少了入口点,把很多危险的系统功能都屏蔽了

三层结构的缺点
“金无足赤,人无完人”,分层式结构也不可避免具有一些缺陷:
1、降低了系统的性能。这是不言而喻的。如果不采用分层式结构,很多业务可以直接造访数据库,以此获取相应的数据,如今却必须通过中间层来完成。
2、有时会导致级联的修改。这种修改尤其体现在自上而下的方向。如果在表示层中需要增加一个功能,为保证其设计符合分层式结构,可能需要在相应的业务逻辑层和数据访问层中都增加相应的代码。

三层架构的搭建

2.2点击新建项—》,选择,应用程序配置文件

2.3打开app.config文件后,写如下代码:

/*在此先弱化了,业务逻辑层*/

第6步:表示层

这样,整个完整、简单的三层框架登录已经基本完成。

请没有完成的同学按照此步骤,务必做完。体验三层框架之间类的调用与关系。

/*针对三层之中的各个“相关责任类”,添加断点,进行测试,看看参数传递效果。*/

下面同学们,连接项目组长的数据库服务器。

打开TCP/IP和其他服务

小结:

n       三层结构与两层结构的区别是什么?

n       为什么要实现分层?各层的作用是什么?

n       三层结构中各层之间相互依赖是如何实现的?

 作业:

   自己根据以前坐的宾馆管理系统、汽车销售系统等C/S系统,依据三层架构的思想,重新搭建新的框架。

C#三十五 三层架构企业应用相关推荐

  1. 软考高级系统架构设计师系列论文三十五:论企业应用集成

    软考高级系统架构设计师系列论文三十五:论企业应用集成 一.摘要 二.正文 三.总结 一.摘要 2021年4月,我参加了南京车站综合信息平台项目的开发,承担项目的方案设计任务.该项目力图通过对车站现有系 ...

  2. 程序员与年龄:四十岁普通开发、三十五岁首席架构、三十岁基层Leader

    最近,有一个词儿特别热门--躺平.有没有人跟你说过:"躺平说起来容易,做起来更容易." 和躺平相对的是另外一个词--内卷,群聊的时候,已经很多次看过草卷起来了.jpg表情包.某些节 ...

  3. 计算机网络实验_三层架构企业网络_基于Cisco Packet Tracer模拟器

    三层架构企业网络_基于Cisco Packet Tracer模拟器 一.实验目的 1.了解一般企业网络的三层架构模型: 2.了解三层架构企业网络内部的通信流程: 3.理解双核心路由的热备份和负载均衡. ...

  4. 程序人生 - 程序员三十五岁瓶颈你怎么看?

    35 岁,职业发展开始遇到瓶颈,有的人已经快写不动代码,也还没有晋升到管理层,个人职业如何发展必是反复拷问过自己的.即使不是自己主动考虑,在目前互联网行业裁员大潮下,中年程序员也有可能被动地被优化掉. ...

  5. 网易云信荣获第十五届中国企业年终评选「IT行业优秀技术奖」!

    近日,由 51CTO主办的<中国企业"IT 印象◆释放 IT 动能,加速数智时代"年终评选>暨2020年第十五届中国企业年终评选获奖结果正式发布,系列获奖新技术.新成果 ...

  6. 软件设计的火花——Brooks新作及《人月神话》三十五周年讨论会纪要

    应UMLChina之邀,本人于6月20日参加了"Brooks新作及<人月神话>三十五周年讨论会",会上由Brooks的<The Design of Design& ...

  7. 三十五岁后,就不能做软件测试了?

    我记得原来大学教授说过,身为一名技术员,如果35岁还不能做到企业中层以上,那考虑转行吧~当然,我觉得这话可能对大部分人来说,可以考虑的.如果想坚持做技术,也一定是可以的,毕竟国外的高龄技术员比比皆是. ...

  8. 【正点原子Linux连载】第三十五章 Linux内核顶层Makefile详解 -摘自【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.0

    1)实验平台:正点原子阿尔法Linux开发板 2)平台购买地址:https://item.taobao.com/item.htm?id=603672744434 2)全套实验源码+手册+视频下载地址: ...

  9. 盘点:三十五个非主流开源数据库

    盘点:三十五个非主流开源数据库 几乎每个Web开发人员都有自己喜欢的数据库,或自己最熟悉的数据库,但最常见的无外乎以下几种: MySQL PostgreSQL MSSQL Server SQLite ...

最新文章

  1. 斐波那契数列的递归实现
  2. 手把手教你薅羊毛,1 元体验业内领先AI技术!
  3. 19秋学期计算机网络基础在线作业,南开19秋学期(1709、1803、1809、1903、1909)《计算机网络基础》在线作业资料答案3...
  4. python学完面向对象之后_Python学完基础语法后,再往后应该学什么?
  5. Suggestion [3,General]: 找不到命令 webpack,但它确实存在于当前位置。默认情况下,Windows PowerShell 不会从当前位置加载命令。如果信任此命令,请改为键
  6. python取两个set的并集、交集、差集
  7. indesign照片放入太大_照片打印机,小米、华为到底哪家强?
  8. 浅谈数据库发展史和 OceanBase 的诞生
  9. 你需要的阿里开源内核诊断工具:diagnose-tools
  10. python基础——使用list和tuple
  11. 开机netmeeting已删除_NetMeeting
  12. 美团BERT的探索和实践
  13. android高仿朋友圈,高仿微信朋友圈图片展示效果 ImageWatcher
  14. Leetcode刷题学习记录
  15. 图解:什么是拓扑排序?
  16. 5年运维经验分享:一个小白走向高级运维工程师之路
  17. Revit中绘图填充与模型填充的区别
  18. js 将一大段时间均分为很多个小时间段
  19. IDL文件详解[转]
  20. php上传 io err,【Dz上传附件】解决Discuz Server(IO)Error问题

热门文章

  1. 想选一个项目来做剧本杀和游戏代理加盟怎么选?
  2. Excel的各Sheet 转csv文件
  3. vue监听键盘Esc事件
  4. 童星养成系统的文推荐_几部养成系列的现言宠文推荐啦,都是不错的大叔文,十分治愈哦~...
  5. 声呐学习笔记之概念性理论
  6. phpstudy搭建php环境
  7. python turtle画房子详细解释_Python Turtle 绘图
  8. jdbc连接orcle数据库_怎样利用JDBC连接并操作Oracle数据库
  9. 读书笔记--《初等数论(第三版)》(闵嗣鹤 严士健 编)第一章 整数可除性(上)
  10. 知乎热议:“所有专业都在劝退”,对大学生最友好的竟是它?