《解剖PetShop》系列之一: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.《爱因斯坦传》读书笔记思维导图模板宠物相继入住,鹦鹉“毕波”,小猫“老虎”,小白狗“奇科” 夏天,购买房产:梅瑟街112号 喜欢拖着脚走路。早上从梅瑟街走到研究院的办公室。路过时,人们会蓦然回首,走路出神的样子很快成为小镇上的著名一景 中午,有3-4位教授或学生陪他回家。走路时他总是沉浸在幻想之中,到家时,有时候还会无意中又走回研究室 ...https://www.processon.com/view/65e6b015005dd34f38779b3a
2.现代学徒制《宠物医疗技术》专业人才培养方案(普招三年制).pdf...(二)职业岗位与职业能力分析 序号 工作岗位 典型工作任务 职业能力 支撑课程 1会进行宠物疾病临床检查 文明礼仪、宠物解剖生 理、动物病理、宠物药 2会进行宠物疾病实验室诊断 理、宠物临床诊疗技术、 3会进行宠物疾病病理学诊断 宠物临床实验室检验技 4会进行宠物疾病寄生虫学诊断 术、宠物影像诊断技术、 宠物疾病...https://m.book118.com/html/2023/0814/5042200042010311.shtm
3.动物医学专业专业考研学校研究生资讯–加倍考研网图片来源买牛网三、我们毕业了干啥去这应该是大家最关心的问题,虽然是农学专业,但动物医学的就业面还是相对比较宽的,我们一个个来看。1、宠物医生。就比如全全自己,大四时考到了“执业兽医资格证”,具备了处方权,毕业后就可以做一名宠物医生了。但是,如果要打算做一名宠物医生,那么在本科的大二大三阶段最好就要...https://www.kaoyankaoyan.com/zixun/dongwuyixuezhuanyezhuanyekaoya4.html
4.下列关于女性外生殖器解剖的叙述,正确的是A. 在A省境内,与人及其宠物有接触的长尾猴只占长尾猴总数的不到10% B. 在A省,感染有狂犬病的宠物...组内每人搜集一首本组所选专题的诗词并做阅读笔记。 [B]第一阶段,总结交流。小组内交流讨论,形成组...重庆住院医师妇产科Ⅰ阶段>女性生殖系统解剖考试题目 【单选题】下列不属于外生殖器的是:( ) A. ...https://m.shuashuati.com/ti/1e3023cc6d444d24ae26b72b8560aad2.html
1.宠物居家图书推荐经典书籍畅销书清单异步社区为您推荐宠物居家图书清单、宠物居家经典图书、宠物居家畅销书,从入门到进阶是您自学宠物居家的必读好书。http://huikeart.com.cn/books?code=UB6cb4415900bc1&type=ushu&seq=0
2.人肺展示详细呼吸系统解剖的真实图解库存图片.图片包括有生成...照片 关于 真实而详细的人肺图,突出呼吸系统和解剖结构. 完美的医疗教育和保健目的. 它在视觉上代表了由支气管和血管组成的复杂网络. 人工生成. 图片 包括有 生成, 病理学, 呼吸 - 325363495https://cn.dreamstime.com/%E4%BA%BA%E8%82%BA%E5%B1%95%E7%A4%BA%E8%AF%A6%E7%BB%86%E5%91%BC%E5%90%B8%E7%B3%BB%E7%BB%9F%E8%A7%A3%E5%89%96%E7%9A%84%E7%9C%9F%E5%AE%9E%E5%9B%BE%E8%A7%A3-%E7%9C%9F%E5%AE%9E%E8%80%8C%E8%AF%A6%E7%BB%86%E7%9A%84%E4%BA%BA%E8%82%BA%E5%9B%BE%EF%BC%8C%E7%AA%81%E5%87%BA%E5%91%BC%E5%90%B8%E7%B3%BB%E7%BB%9F%E5%92%8C%E8%A7%A3%E5%89%96%E7%BB%93%E6%9E%84-image325363495
3.@萧宏慈医行天下拍打拉筋自愈法手册(上)中医学习笔记只要长期坚持拍打拉筋,人一定会越来越健康、喜乐和自在。可惜有些人只有病重了才开始重视身体,他们对自己的汽车、宠物很注意保养,小修大修、小病大病都很关心,但对自己的身体却不愿保养,只对“大修”,亦即治疗大病才感兴趣,大约这就是所谓“命运”吧!https://zhong1.org/712.html
4.v2.web.js首先,医生会对患者进行口腔检查和摄片检查,以明确缺牙区骨量情况和相近重要解剖结构的情况,结合口腔内的咬合情况,进行治疗方案的设计。接下来,便会根据方案,进行种植体的植入手术。——。 对于老将的作用,蔡斌也同样重视,“她在球场上的经验、分球的合理性,还是非常老道的,而且国际比赛的经验也很丰富。同时当大家在...https://v2.web.js-cyyl.com/mmmj51148788.shtml
5.李心草死亡事件最新进展!南方plus扫码加小助手微信,即可免费进群听课↓↓ ▊ 南都好物馆 近日,南都君送出了《罗马》、《喵呜不停 2020日历》,《动物内心笔记:遇见所罗门王的指环》,《高能要事》,《细菌小不点人体历险记》,戳标题,可查看活动。 点击上图,7.4折 点击上图,7折 ▌https://static.nfapp.southcn.com/content/201910/15/c2708111.html
6.2021级宠物养护与驯导专业人才培养方案2,知识 (1)具有必需的公共英语听,说,读,写基本知识和职业英语知识; (2)具有必备的文化基础知识和人文社会科学知识; (3)具有计算机应用的基本知识; (4)具有必需的分析化学,动物生物化学等基础知识; (5)具有必备的宠物解剖与组织胚胎,宠物生理,动物病理等基础知识; (6)具有必备的宠物药理,宠物微生物等基础知识...https://www.gscat.edu.cn/content/clientDf.do?id=52372
7.宠物医生手册.pptx宠物医生手册读书笔记01思维导图精彩摘录目录分析内容摘要阅读感受作者简介目录0305020406思维导图宠物手册宠物介绍医生知识疾病方面医学治疗包括详细诊断预防保健护理健康检查良好本书关键字分析思维导图内容摘要内容摘要《宠物医生手册》是一本全面介绍宠物医学知识和实践经验的书籍,适合所有宠物医生和宠物爱好者阅读。本书涵盖...https://m.renrendoc.com/paper/304381538.html
8.qwlfgzs.cn/五条悟做哭虎杖的图片 闺蜜尿裤子作文精选笔记 拿去吧义子[头盔]关键词:group:3.5tousin一:artist:shigure sana二:artist:sa sp办公室写字楼小诗 外国...男人与雌性宠物交啪啪 廖承宇Chinese野战做受 婬荡妺妺的好深太紧了小说 超清特写XXXHD毛茸茸 中国卖婬BB护 欧美人与嘼在线A片观看免 js?jc...http://qwlfgzs.cn/
9.www.yatonglc.com/yyys73243100.htm137最大但人文艺术图片 霸道太子调教奴video 优优人休 女生喊疼男生越往里寨的高清视 色色菇啊笔记 熟女的B都干肿了 不想疼的话就叫老公 超碰97人人做人人爽尤物免费在线观看 人妻痴汉电车五十路公交车 vicineko史莱姆大战系列在哪里看 草莓视频丝瓜视频芭乐视频 ww4444黄色电影院 导购员白虎...http://www.yatonglc.com/yyys73243100.htm
10.法布尔生平事迹(精选14篇)就是在这儿,法布尔一边进行观察和实验,一边整理前半生研究昆虫的观察笔记、实验记录和科学札记,完成了《昆虫记》的后九卷。如今,这所故居已经成为博物馆,静静地坐落在有着浓郁普罗旺斯风情的植物园中。法布尔一生坚持自学,先后取得了业士学位、数学学士学位、自然科学学士学位和自然科学博士学位,精通拉丁语和希腊语,喜爱...https://www.360wenmi.com/f/fileow52zt89.html