本文探讨如下几个问题:
成都创新互联专注于新郑企业网站建设,自适应网站建设,商城系统网站开发。新郑网站建设公司,为新郑等地区提供建站服务。全流程定制网站建设,专业设计,全程项目跟踪,成都创新互联专业和态度为您提供的服务如果你搜索「架构模式和架构风格的区别」,你会发现答案千差万别:
我个人的观点是:架构模式是特定问题域下,架构风格的具体应用!
我们来一个个的说!
在说架构模式之前,我们先来看看我们常挂在嘴边的设计模式是怎么定义的!
GOF在《Design Patterns》这本书的「What is a Design Pattern?」小节,对设计模式下了一个明确的定义:
The design patterns in this book are descriptions of communicating objects and classes that are customized to solve a general design problem in a particular context.
设计模式描述了一组类和对象的关系,用以解决特定上下文内的某个常见的设计问题!
那我们可以这么定义架构模式:架构模式描述了一组组件之间的关系,用以解决特定上下文内的某个常见的架构问题!
Wiki上也给架构模式做了类似的定义:
An architectural pattern is a general, reusable solution to a commonly occurring problem in software architecture within a given context
架构模式是一个通用的、可重用的解决方案,用以解决特定上下文内的某个常见的架构问题!
Roy Thomas Fielding博士,在他的REST论文中,对架构风格做出了定义:
An architectural style is a coordinated set of architectural constraints that restricts the roles/features of architectural elements and the allowed relationships among those elements within any architecture that conforms to that style.
一种架构风格是一组协作的架构约束,这些约束限制了架构元素的角色和功能,以及在任何一个遵循该风格的架构中允许存在的元素之间的关系。
Martin Flower在微服务文章中的说明,也间接支持了此定义。文中首先明确「微服务」是一种架构风格,然后给出了微服务所具有的特征(就是约束),具有这些约束的系统就可以说是使用了微服务架构风格!
微软的Azure文档也给出了类似的定义:架构风格即约束!
上面我们分别给「架构模式」和「架构风格」下了定义!那么「架构模式」和「架构风格」到底有什么区别呢?
我们来看架构模式的定义,可以抽出几个关键词:
我们再看架构风格的定义,它仅仅就是约束!约束了组件之间的关系!
所以「架构模式」和「架构风格」的区别就在这里:
如果你仔细看看Wiki中列出的架构风格和架构模式,你就能看出点端倪了!
你会发现,架构风格中有「Multilayered」这个架构风格,架构模式里也有「Multilayered」架构模式!好像分层架构既是架构风格,也是架构模式!实际上架构模式中的「分层架构」是架构风格中的「分层架构」的实际应用。
更具有说服力的是CS架构风格,可以看到此架构风格后面有个阐述「2-tier, 3-tier, n-tier exhibit this style」,意思是两层架构、三层架构、n层架构都是CS架构风格的一种表现形式。而可以看到,三层架构是一个架构模式!
你有没有一个疑问?两层架构、三层架构、N层架构为什么不是分层架构风格的表现形式?而是CS架构风格的一种表现形式?
这个问题在后面的CS架构和分层架构中会具体阐述。
再具体一点,我们看看CS架构的约束:
可以看到,这里只是约束了系统分为Client和Server,以及Server和Client之间的行为。
再来看三层架构模式,三层架构一般分为:
可以看到,三层架构模式比CS架构风格更具体,描述了每一层的作用。
当系统有如下需求时,就可以考虑三层架构:
用Renan Johannsen de Paula Venilton FalvoJr在《Architectural Patterns and Styles》中对架构模式和架构风格的区别来总结一下:
实际工作中,我们一般会说「架构」,而没有具体到是「架构风格」还是「架构模式」。这么做其实有几点好处:
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。