在应用系统开发中,采用严格的、单一的、真正的的分层架构是可以的,但实际上我们已经采用了多种架构模式设计系统。当多种不同范式的架构混合在一起,你会不会出现“指鹿为马”的现象呢?
在研究分层架构时,常通过概念性的定义或 OSI 七层应用(架构)来说明或解释分层架构:
取自《 POSA , VolI , p22 》
作为一个在项目中引入分层架构的应用者,我们应该从更具体的规范来实现分层架构:
《 POSA , VolI 》 为我们提供了更多的实现规范,然而我要解决的是有关层的 单向依赖 问题。因为有一些人在使用分层架构时,尤其是将分层架构引入到项目的目录结构时,对于某些对象的划分(从属)存在一些混乱问题。
如果你有兴趣了解更多分层架构的实现规范,可参考:《 POSA , VolI 》第二十六页到第二十九页相关知识。
在领域驱动设计(DDD)中采用的是 松散分层架构 ,层间关系不那么严格。每层都可能使用它下面所有层的服务,而不仅仅是下一层的服务。每层都可能是半透明的,这意味着有些服务只对上一层可见,而有些服务对上面的所有层都可见。
注意:松散分层架构依然是单向依赖,表明上层只能调用下层的服务,下层不能调用上层的服务。
同时在领域驱动设计(DDD)中也采用了 继承分层架构 ,高层继承并实现低层接口。我们需要调整一下各层的顺序,并且将 基础设施层 移动到最高层。
注意:继承分层架构依然是单向依赖,这也意味着领域层、应用层、表现层将不能依赖基础设施层,相反基础设施层可以依赖它们。
领域层 UserRepository 接口:
基础设施层 JpaUserRepository 实现类:
我们确实使用包来划分层级,但是包名并不能真正表示分层。
我们通常将资源库的实现放置在基础设施层,这是因为我们采用了 继承分层架构 。如果你现在采用的是 松散分层架构 ,你需要将资源库的实现放置在领域层。这是层的单向依赖原则所致,你不应该破坏这个原则。没有任何理由需要破坏分层架构的单向依赖原则,除非你不采用分层架构。
我们应该从混乱到有序的这个历史过程去研究(分析)分层架构,尤其是我们现在处在前后端分离的环境下,应用系统使用分层架构又面临着什么样的划分变化。
应用系统使用分层架构在第三阶段基本已经成熟。因为我们要探讨的是有关领域驱动设计(DDD)的分层架构,所以我们依然需要做进一步补充。具体包括两方面的补充:
物联网感知环节的异构特性决定了它的开放、分层和可扩展的网络体系结构。
研究人员在描述物联网的体系框架时,多采用国际电信联盟ITU-T的泛在感应器网络体系结构作为基础。该体系结构自下而上分为5个层次,分别为传感器网络层、泛在传感器网络接入层、骨干网络层、网络中间件层和USN网络应用层。
在谈到具体的物联网应用时,一般传感器网络层和泛在传感器网络接入层合并成为物联网的感知层,主要负责采集现实环境中的信息数据。
骨干网络层在物联网的应用当中是互联网,那么将被下一代网络NGN所取代。而物联网的应用层则包含了泛在传感器网络中间件层和应用层,主要实现物联网的智能计算和管理。 欧洲电信标准化协会M2M技术委员会给出的简单M2M架构,是USN的一个简化版本。在这个架构当中,从左至右网络就分为了应用层、网络层和感知层三层体系结构,与物联网结构相对应。
在每一层当中,都有不同的技术标准来定义物联网应用。比如在感知层,它就包括了IEEE的Zigbee标准802154,CeneLec的智能仪表标准。在网络层,有ETSI的M2M通信标准,Cen的智能仪表网络层标准协议。应用层有Zigbee联盟协议,W3C标准协议等等。 国际电信联盟第13研究组会议正式审议通过了“物联网概述”(YIoT-overview)标准草案,标准编号为Y2060。该标准是全球第一个物联网总体性标准。
Y2060是由我国工信部电信研究院牵头立项,多家国内外高校、科研机构、企业和标准组织共同协商制定完成的第一份物联网总体性标准草案。
该概述标准涵盖了物联网的概念、术语、技术视图、特征、需求、参考模型、商业模式等基本内容。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)