我们常常谈到软件的架构、框架、模式与平台,然而常常将它们混淆。设计模式<框架<架构<平台,从复用角度讲,设计模式是代码级复用、框架是模块级复用、架构是系统级复用、平台是企业应用级复用。
定义:
软件架构:软件架构是一个系统的草图。软件架构描述的对象是直接构成系统的抽象组件。各个组件之间的连接则明确和相对细致地描述组件之间的通讯。设计软件架构就是把系统分解为一些部件,描述这些部件的职责及它们之间的协作行为。
软件框架:软件框架是面向领域(如 ERP、计算领域等)的、可复用的“半成品”软件,它实现了该领域的共性部分,并提供了一些定义良好的可变点以保证灵活性和可扩展性。也就是说软件框架是领域分析结果的软件化,是领域内最终应用的模板,是特定语言和技术的架构应用解决方案。
常见架构及框架:
(1)分层架构(layered architecture):如三层架构 界面层(User Interface layer)、业务逻辑层(Business Logic Layer)、数据访问层(Data access layer)
(2)事件驱动架构(event-driven architecture):事件队列(event queue)、分发器(event mediator)、事件通道(event channel)、事件处理器(event processor)。如:Netty、Spring mvc等框架。
(3)微核架构(microkernel architecture):又称为"插件架构"(plug-in architecture)。如:Shiro等框架。
(4)微服务架构(microservices architecture)是服务导向架构(service-oriented architecture,缩写 SOA)的升级。每一个服务就是一个独立的部署单元(separately deployed unit)。Spring boot、Spring cloud和dubbo等框架。
(5)云结构(cloud architecture)主要解决扩展性和并发的问题,是最容易扩展的架构。
区别:
软件的架构是一个系统草图,是关于软件设计方面的重要的决策,它将软件规范的分为各个部分,并且决定各部分内部结构以及各部分之间的联系。经过开发之后,软件架构可以体现在软件当中。
而软件框架是软件的一部分,它是软件的半成品,为软件提供基础的结构和一些规范约束,然后开发人员在软件框架的基础上进行开发。
联系:
框架技术和架构技术的出现,都是为了解决系统日益复杂所带来的困难而采取的“分而治之”的思维的结果 - 先大局后局部,就出现了架构;先通用后专用,就出现了框架。架构是问题的抽象解决方案,关注大局而忽略细节;而框架是通用半成品,还必须根据具体需求进一步定制开发才能变成应用系统。
相比框架与架构,模式和平台与其他相比更容易理解一些。
模式:
所谓模式,实际上更应该说是一种可以复用的技巧,它不一定像“模型”一样体现着模块之间的整体关系,而是“模型”的超集,可以用在设计领域的方方面面。模式分为代码模式、设计模式、框架模式这些 设计模式有不同的分类,如下 创建型设计模式,如工厂方法(Factory Method)模式、抽象工厂(Abstract Factory)模式、原型(Prototype)模式、单例(Singleton)模式,建造(Builder)模式等。
设计模式研究的是对象与对象之间的关系。一般来说,对象是组成程序的,所以设计模式往往用在程序设计(编码)过程中。但对象之间的关系也可以套用在更广的维度中——模块间的结构与关联、进程间的交互,都可以复用设计模式中的某些思路
模型:
模型,是一种描述问题的工具。这里需要注意的是我所说的模型并不是所谓“数学建模”、“软件建模”得到的模型,而是另外一种模型,比如对象模 型,关系模型等等。这类模型是一些规定,这些规定描述了如何去描述一个概念,同时还规定了一系列的操作,这些操作描述了概念之间如何进行交互。比较典型的 就是关系模型,他描述了使用很多很多的属性(数据库字段)来描述一个概念(数据库表),以及这些概念之间的关系,比如Union(对应union操作 符),Project(对应select columnname from tablename)等等。模型是一种工具,他是用来帮助人们记录和分析问题的。其他的常用模型还包括对象模型,UML模型等等。
框架与设计模式:
框架、设计模式这两个概念总容易被混淆,其实它们之间还是有区别的。框架通常是代码重用,而设计模式是设计重用,架构则介于两者之间,部分代码重用,部分设计重用,有时分析也可重用。在软件生产中有三种级别的重用:内部重用,即在同一应用中能公共使用的抽象块;代码重用,即将通用模块组合成库或工具集,以便在多个应用和领域都能使用;应用框架的重用,即为专用领域提供通用的或现成的基础结构,以获得最高级别的重用性。
框架与设计模式虽然相似,但却有着根本的不同。设计模式是对在某种环境中反复出现的问题以及解决该问题的方案的描述,它比框架更抽象;框架可以用代码表示,也能直接执行或复用,而对模式而言只有实例才能用代码表示;设计模式是比框架更小的元素,一个框架中往往含有一个或多个设计模式,框架总是针对某一特定应用领域,但同一模式却可适用于各种应用。可以说,框架是软件,而设计模式是软件的知识。
平台的概念类似框架,但又结合的架构的考虑,它是更高层面上的“框架”,准确说是一种应用。它是针对企业用户,为解决企业业务需要而形成的产品。
参考:
https://blog.csdn.net/qq_41699100/article/details/79228957
https://www.cnblogs.com/doit8791/p/9343826.html
https://blog.csdn.net/weixin_36317299/java/article/details/80558632