[转]《解剖PetShop》系列之一张荣华

在软件体系架构设计中,分层式结构是最常见,也是最重要的一种结构。微软推荐的分层式结构一般分为三层,从下至上分别为:数据访问层、业务逻辑层(又或成为领域层)、表示层,如图所示:

数据访问层:有时候也称为是持久层,其功能主要是负责数据库的访问。简单的说法就是实现对数据表的Select,Insert,Update,Delete的操作。如果要加入ORM的元素,那么就会包括对象和数据表之间的mapping,以及对象实体的持久化。在PetShop的数据访问层中,并没有使用ORM,从而导致了代码量的增加,可以看作是整个设计实现中的一大败笔。

松散耦合的好处是显而易见的。如果一个系统没有分层,那么各自的逻辑都紧紧纠缠在一起,彼此间相互依赖,谁都是不可替换的。一旦发生改变,则牵一发而动全身,对项目的影响极为严重。降低层与层间的依赖性,既可以良好地保证未来的可扩展,在复用性上也是优势明显。每个功能模块一旦定义好统一的接口,就可以被各个模块所调用,而不用为相同的功能进行重复地开发。

进行好的分层式结构设计,标准也是必不可少的。只有在一定程度的标准化基础上,这个系统才是可扩展的,可替换的。而层与层之间的通信也必然保证了接口的标准化。

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

前面提到,PetShop的表示层是用ASP.Net设计的,也就是说,它应是一个BS系统。在.Net中,标准的BS分层式结构如下图所示:

随着PetShop版本的更新,其分层式结构也在不断的完善,例如PetShop2.0,就没有采用标准的三层式结构,如图三:

从图中我们可以看到,并没有明显的数据访问层设计。这样的设计虽然提高了数据访问的性能,但也同时导致了业务逻辑层与数据访问的职责混乱。一旦要求支持的数据库发生变化,或者需要修改数据访问的逻辑,由于没有清晰的分层,会导致项目作大的修改。而随着硬件系统性能的提高,以及充分利用缓存、异步处理等机制,分层式结构所带来的性能影响几乎可以忽略不计。

PetShop3.0纠正了此前层次不明的问题,将数据访问逻辑作为单独的一层独立出来:

PetShop4.0基本上延续了3.0的结构,但在性能上作了一定的改进,引入了缓存和异步处理机制,同时又充分利用了ASP.Net2.0的新功能MemberShip,因此PetShop4.0的系统架构图如下所示:

比较3.0和4.0的系统架构图,其核心的内容并没有发生变化。在数据访问层(DAL)中,仍然采用DALInterface抽象出数据访问逻辑,并以DALFactory作为数据访问层对象的工厂模块。对于DALInterface而言,分别有支持MS-SQL的SQLServerDAL和支持Oracle的OracleDAL具体实现。而Model模块则包含了数据实体对象。其详细的模块结构图如下所示:

可以看到,在数据访问层中,完全采用了“面向接口编程”思想。抽象出来的IDAL模块,脱离了与具体数据库的依赖,从而使得整个数据访问层利于数据库迁移。DALFactory模块专门管理DAL对象的创建,便于业务逻辑层访问。SQLServerDAL和OracleDAL模块均实现IDAL模块的接口,其中包含的逻辑就是对数据库的Select,Insert,Update和Delete操作。因为数据库类型的不同,对数据库的操作也有所不同,代码也会因此有所区别。

此外,抽象出来的IDAL模块,除了解除了向下的依赖之外,对于其上的业务逻辑层,同样仅存在弱依赖关系,如下图所示:

图七中BLL是业务逻辑层的核心模块,它包含了整个系统的核心业务。在业务逻辑层中,不能直接访问数据库,而必须通过数据访问层。注意图中对数据访问业务的调用,是通过接口模块IDAL来完成的。既然与具体的数据访问逻辑无关,则层与层之间的关系就是松散耦合的。如果此时需要修改数据访问层的具体实现,只要不涉及到IDAL的接口定义,那么业务逻辑层就不会受到任何影响。毕竟,具体实现的SQLServerDAL和OracalDAL根本就与业务逻辑层没有半点关系。

因为在PetShop4.0中引入了异步处理机制。插入订单的策略可以分为同步和异步,两者的插入策略明显不同,但对于调用者而言,插入订单的接口是完全一样的,所以PetShop4.0中设计了IBLLStrategy模块。虽然在IBLLStrategy模块中,仅仅是简单的IOrderStategy,但同时也给出了一个范例和信息,那就是在业务逻辑的处理中,如果存在业务操作的多样化,或者是今后可能的变化,均应利用抽象的原理。或者使用接口,或者使用抽象类,从而脱离对具体业务的依赖。不过在PetShop中,由于业务逻辑相对简单,这种思想体现得不够明显。也正因为此,PetShop将核心的业务逻辑都放到了一个模块BLL中,并没有将具体的实现和抽象严格的按照模块分开。所以表示层和业务逻辑层之间的调用关系,其耦合度相对较高:

THE END
1.狗狗的身体解剖结构图带你深层次的认识狗狗狗狗的身体解剖结构图 带你深层次的认识狗狗 狗狗的解剖图有利于狗狗受伤了,主人给医生紧急描述病情和伤况。 狗狗骨骼解剖图 狗狗左侧器官解剖图 狗狗右侧器官解剖图 狗狗俯视器官解剖图https://mip.xiaokeai.com/dog/baike/17674.html
2.解放汽车结构图解剖图车友交流懂车帝提供解放汽车结构图解剖图的车友交流详细内容,懂车帝是一个汽车资讯平台,懂车更懂你。我们提供最新汽车报价,汽车图片,汽车价格大全,行情、评测、导购等内容,看车选车买车就上懂车帝。https://www.dongchedi.com/tag/ugc/14580112
3.宠物(犬猫)解剖结构与系统分析.pptA:系统解剖学 是按照宠物有机体的功能系统,来阐述各器官的形态结构和位置关系的科学。 B:局部及剖学 是按照动物有机体的部位进行解剖,以观察其各个器官形态结构和位置关系的科学。 C: 比较解剖学 用比较的方法,来研究各种常见宠物同类器官的形态结构、位置只异同点的科学。 D:x-射线解剖学 用x射线来研究宠物有...https://m.taodocs.com/p-464197175.html
4.宠物解剖生理主要研究有机体形态结构和生命活动规律整体式空气处理机组一般结构有: A. 整体式箱体 B. 风机 C. 换热器(盘管) D. 过滤装置 查看完整题目与答案 下面哪个包中的类呗自动导入到程序中? A. java.base B. java.lang C. java.io D. java.util 查看完整题目与答案 设无向图的顶点个数为n,则该图最多有( )条边(清华、西...https://www.shuashuati.com/ti/d280ab0d574e48f590537ed5f31496f8.html?fm=bdbdsf889ad4e663ab390423f226c9595aaf7
5.马解剖马的内部解剖图片商业图片正版原创图片下载购买VEER图片库提供马解剖-马的内部解剖图片购买下载服务,2亿+高清商业图片,正版图片购买下载一站服务,另提供动物脊骨图片,胸腔图片,动物医院图片,直肠图片,韧带图片,盲肠图片,动物消化系统图片,脾脏图片,兽医图片,骨骼图片,宠物图片,马图片,脊柱图片,方形画幅图片,动物学图https://www.veer.com/illustration/127432460
6.对调查到的生物可以按照用途.将其分为作物.家禽.家畜.宠物等...3.大部分生物是由细胞构成的,下列有关细胞的叙述错误的是( ) A. 细胞的所有结构在光学显微镜下都可以清晰的分辨 B. 细胞是细胞生物的功能单位 C. 细胞是细胞生物的生命活动单位 D. 细胞是细胞生物的结构单位10.我县每年4月万亩桃花竞相吐艳,美不胜收.图甲为桃花的解剖结构示意图,图乙为桃子结构示意图,请...https://m.1010jiajiao.com/czsw/shiti_id_b8aa1dd02c5cc66d8f70ecb5748404e6
7.学术文献详情宠物龟的泄殖腔器官脱垂在临床上主要分为远端肠道脱垂、交配器官、输卵管和壳腺、膀胱脱垂等四种情况,其中临床中80%的病例为远端肠道(肛道)脱垂与交配器官脱垂。由于乌龟的特殊生理解剖结构即消化管、输尿管和生殖管(肛道、尿生殖道)汇合在泄殖腔,所以龟生殖器脱出往往好多人认为是脱肛,其实这样认为是错误的,临床病例统...https://www.cnsav.com/newsdetails/234
8.宠物(犬猫)解剖.ppt文档全文免费预览宠物(犬猫)解剖.ppt,宠物(犬猫)解剖;课程内容 ;绪论;(二)教学目标: 熟悉基本概念和机体的基本结构。 掌握犬运动系统的组成,骨骼、肌肉的位置、形态构造。 了解神经系统和皮肤及其衍生物的形态构造。 掌握犬心血管、消化、呼吸、泌尿、生殖系统的组成及其形态构造、https://max.book118.com/html/2019/0707/7050062154002036.shtm
1.2017级畜牧兽医专业人才培养方案图5畜牧兽医专业(兽医方向)课程体系结构图 表2畜牧兽医专业课程体系 (二)课程的设置 1.教学周数 三年共计147周。其中专业技能教学85周,入学教育与军训2周,毕业实习16周,毕业作品设计指导1周,毕业答辩与毕业教育1周,考试4周,节假日5周,寒暑假期33周(暑假18周、寒假15周)。 https://shxy.yvtc.edu.cn/news/show-557.html
2.虚拟解剖图逼真呈现人与动物内部结构(组图)这是一只冰冻的死狼解剖图。 上一页2345678910下一页 页面功能[评论][新闻爆料][大中小字][推荐][打印][关闭] ·图片新闻 迈克杰克逊行踪诡异 张纪中片场偷拍安以轩 网友曝光:85岁修 ... 新年滋味 警车坠河致2人遇难 美女裸体抗议买卖宠物 ·热点资讯更多 ...https://www.qingdaonews.com/content/2009-01/05/content_7976594_7.htm
3.宠物体基本结构(宠物解剖生理).pptx宠物解剖生理细胞目录CONTENTS细胞形态和大小细胞的结构与功能细胞的基本生命活动010203宠物体基本结构细胞细胞形态和大小01细胞膜细胞质细胞核细胞宠物体基本结构细胞细胞的结构与功能02(一)细胞膜1、细胞膜的基本结构膜以液态的脂质双分子层为支架,其中镶嵌不同结构和功能的蛋白质。液态镶嵌模型宠物体基本结构细胞2、细胞...https://m.renrendoc.com/paper/268028859.html
4....医学足关节解剖示意图人体结构解剖图挂2仲夏夜的梦宠物用品店 登录查看更多图片 > 人体骨骼器官医院图挂画 医学足关节解剖示意图人体结构解剖图挂... 京东价 ¥ 促销 展开促销 配送至 --请选择-- 支持 加入购物车 https://item.jd.com/10111933486321.html
5.腰部脊椎疼痛的人体结构图图片信息简介:腰部脊椎疼痛的人体结构图·图片编号为980170,上传时间为2019-12-20 20:22:32,图片为高清图,宽为6000像素,高为6000像素,图片体积大小为6.88M,格式为JPG,颜色模式为RGB,分辨率为72 Dpi。特别提醒:本站所有作品收集于网络,版权均属各自所有者,本站素材仅提供学习参考,请勿商用,如有侵权请联系我们邮箱...https://www.2008php.com/tuku/980170.html
6.畜牧兽医实验室功能简介14篇(全文)主要为正常畜禽大体解剖实习,是直观学习动物宏观结构的场所。也为动物病理剖检和相关研究课题的开展服务。 1.1.2动物生理实验室 承担《动物生理》课程的动物机能学实验实训及相关课题研究 1.1.3显微镜实验室Ⅰ、显微镜实验室Ⅱ 显微镜实验室是畜牧兽医专业基础实验室,主要承担《家畜解剖生理》、《兽医微生物》、《动物寄...https://www.99xueshu.com/w/file3dfvaqu4.html
7.心脏图素材心脏图图片心脏图素材图片下载第3页红心心脏跳动示意图医药和保健 白色背景上的人体结构图人类心脏解剖学模型 兽医诊所宠物医院细线图标设置 人类的心脏全息图人类的心脏 心脏和伞象征着家庭保护 心脏监视器警报显示器上的心跳心动图. 兽医呼吁为小动物献爱心兽医的部分图像,用狗和猫的符号展示剪纸的心脏,全景镜头 ...https://www.51miz.com/so-sucai/2750327/p_3/
8.动物解剖免费3d模型动物解剖免费模型图片素材免费下载现代 宠物营养品 宠物营养品产品3D模型 89 野猪 山猪 猪 陆地动物 野生动物 大型动物 哺乳动物 哺乳类动物3D模型 146 现代 野猪 山猪 陆地动物3D模型 68 小猪 猪肉 家禽3D模型 246 人体解剖男人骨骼人物标本人体结构3D模型 84 现代 野猪 山猪 陆地动物3D模型 147 物质原理图 生物反应图 电解质原理图 ...https://3d.3d66.com/relation/relation_2061703.html
9.关于猫的牙科疾病大总结牙齿横截面解剖图 制图:GT牙龈沟 制图:GT (1)牙本质:最多 (2)牙釉质:最硬,但是抗折能力不一定强 (3)牙骨质:比牙本质硬,比牙釉质软一点 (4)牙髓腔:供血,有血管,神经,淋巴管。最重要有造牙本质细胞,牙本质需要生产。可以不断增厚内壁,猫年龄牙髓腔越小。(不断的巩固内壁,代偿性加固)有一定修复...https://www.douban.com/note/825970879/
10.人体表面解剖学及图谱(第2版)商品编号:4573280 ISBN:9787572505287 出版社:河南科学技术出版社 作者:编者:郭志坤//文小军//王省//杨昌辉|责编:李林 出版日期:2021-11-01 开本:16 装帧:暂无 中图分类:R322-64 页数:336 册数:1 大约重量:470(g)购买数量: - + 库存:18 配送: 预计72小时发货 ...https://www.jarhu.com/book-3573280.html
11.3dbody宠物最新版下载3dbody宠物appv8.7.713dbody宠物软件提供不同动物的身体构造解剖图,支持3d模型查看,帮助用户直观的了解宠物身体构造,非常适合兽医使用学习。里面有海量的宠物病例和详细的动物部位,超300+视频动画,快速了解不同动物之间的异同,提升兽医水平,有需要的用户点击下载使用吧! 软件介绍 https://www.ggzha.com/az/85206.html