缘由
因为一些特殊的机缘,接触到洋葱架构等一些新架构设计概念。
尝试理解了一段时间,就想简单梳理下对它们的理解,以达到学新而知故 😃
信息增益
以前计算机专业并不设置通信领域的信息论的专业课程,但是,信息论的知识,应该是每个计算机从业者必知必会的概念。
区别信息之间的相同与差别,找出相同和不同,才能将掌握的信息量增加,以达到学新而知故!
- 集中精神、注意观察、多试几次!
在多试几次这步,信息量的增加是核心要诀,不然,都是无效的徒劳!
所以,我总在信息量不增加的情况下,宁肯抱残守缺,并不选择继续重试,必须在找到新方法、新工具、新视角情况下,展开下一次尝试!
以前积累的架构设计
- 分层设计
- MVC设计
新学习的架构
- 六边形架构
- 洋葱架构
架构设计更高层面的哲学
- 高内聚、低耦合
- 单一职责
- 依赖倒置,利用稳定接口将变化隔离
- 稳定之锚必须存在,不然,无法建构一个系统,犹如在沙滩上搭建房子一般
- 即使是依赖倒置这种场景,也有稳定的部分和变化的部分
分层设计
分层设计,层次之间拥有稳定的接口,但层次与层次之间在细节上无关的,代表着高内聚和低耦合、单一职责设计原则指导下的隔离。
其典型代表是网络协议栈。
当协议栈处理网络层IP
协议时,并不需要关心传输层TCP/UDP
层的具体报文,而仅仅将其看成有效载荷,进行无差别的处理而已。
- 另外,分层设计需要注意自举能力,通过功能分解,最终完成大功能的自举过程
MVC设计
MVC设计,按照职责进行分割系统,如以用户为视角,从前端View,到中台Controller,再到数据后端Model。
从结构上来看,与分层设计并无太大区别,但是,具有新意,在WEB
系统场景,使得对于理解和实践分层设计很有帮助。
六边形架构和洋葱架构
两种新的架构,着重于依赖倒置原则,将依赖外悬进行适配,或分出不同的圈层进行隔离,以利于核心业务层的稳定。
如果说,分层设计对上层的依赖仅为有效载荷
的假设,六边形架构和洋葱架构,则允许更多的假设,
但采用依赖倒置的办法,在外层圈层将这些依赖固化后,而在核心层可以进行无差别的接口假设进行执行。
六边形架构和洋葱架构,退化来看,也是一种分层设计,但还是有所着重。在适应的场景,用其进行建构更方便,用其长处!
当分层演变为多边形
当简单的分层设计出现比较严重跨层的耦合时,例如,途中红色的线,实际上出现多边形结构。
这时看是否设计上向六边形架构和洋葱架构靠拢。
六边形架构
洋葱架构
树形架构
以前刚毕业时,自己也曾有:在枝叶处确定细节,在主干区无差别地进行共同处理
此种无名气的设计思想,是否也可以理解为,在六边形架构和洋葱架构之外,另外一重诠释呢?
设计的稳定之锚
纵观各种架构设计,居于内层的领域模型,必须是稳定之锚。
然后,合理地区分变化和稳定的关系,迭代、重构开发,谁也无法提前理解全部,哈哈