描述软件架构与框架之间的区别与联系
一、软件框架
软件框架是面向领域(如ERP、计算领域等)的、可复用的“半成品”软件,它实现了该领域的共性部分,并提供了一些定义良好的可变点以保证灵活性和可扩展性。也就是说软件框架是领域分析结果的软件化,是领域内最终应用的模板。
随着软件规模的扩大、应用广泛和软件复用技术的发展,以子程序和类为单位的软件复用出现了很多的不足之处:
(1)子程序的库越来越庞大以至于其使用人员难以掌握
(2)大多数类的粒度很小,其自身不能完成所有有用的功能
正是因为这些原因,使得人们在复用中将一组类(模块)作为一个整体来考虑,由此出现了软件框架。而软件框架中至少包含以下组成部分:
(1)一系列完成计算的模块,成为构件
(2)构件之间的关系及交互机制
(3)一系列可变点(热点、或者称为调整点)
(4)可变点的行为调整机制
开发人员通过软件框架行为调整机制,将领域中具体应用中所特有的软件模块绑定到该软件框架的可变点上,从而得到了最终的应用系统,这个过程称为软件软件框架的例化,软件框架的存在使得开发人员将主要的精力放在系统所特有的模块的开发上,从而提高软件的生产率和质量。
软件框架的行为调整机制是指如何针对具体的应用调整该框架的可变部分、如何在可变点加入特定应用模块所采用的方法和规则。
二、软件架构
软件架构是一个系统的草图。软件架构描述的对象是直接构成系统的抽象组件。各个组件之间的连接则明确和相对细致地描述组件之间的通讯。
软件架构在定义上分为‘组成派’和‘决策派’两大阵营,分别描述如下:
-
’组成派‘认为软件架构是将系统描述成计算组件及组件之间的交互。它有两个非常明显的特点“:
- 关注架构实践的客体——软件,以软件本身作为描述对象。
- 分析了软件的组成,说明软件不是一个‘原子’意义上的整体,而是有不同的部分经过特定的接口进行连接组成的一个整体,这对软件开发来说很重要。
-
‘决策派’认为软件架构包含了一系列的决策,主要包括:
- 软件系统的组织
- 选择组成系统的结构元素和它们之间的接口,以及当这些元素相互协作时所体现的行为
- 如何组合这些元素,使它们逐渐合成为更大的子系统
- 用于指导这个系统组织的架构风格:这些元素以及它们的接口、协作和组合
软件架构并不仅仅关注软件本身的结构和行为,还注重其他特性:使用、功能性、性能、弹性、重用、可理解、经济以及技术的限制和权衡等
简而言之,框架和架构的关系可以总结为两句话:(1)为了尽早验证架构设计,或者处于支持产品线开发的目的,可以将关键的通用机制甚至整个架构以框架的方式进行实现;(2)业界(及公司内部)可能存在大量可供重用的框架,这些框架或者已经实现了软件架构所需的重要架构机制,或者为未来系统的某个子系统提供了可扩展的半成品,所以最终的软件架构可以借助这些框架构造。
项目简单三层架构示意图
采用三层架构的优点:
1、相关开发人员可以只关注整个结构中的其中某一层;
2、可以很容易的用新的实现来替换原有层次的实现;
3、可以降低层与层之间的依赖;
4、有利于标准化;
5、利于各层逻辑的复用。
6、结构更加的明确
7、在后期维护的时候,极大地降低了维护成本和维护时间
研究VUE 与 Flux 状态管理的异同
相同点:
- 中心化状态管理
- 状态只能通过专门 突变 单元进行变更
- 应用层通过发送信号(一般称 action),触发变更
不同点:
- Vuex把action细分成了action和mutation,分别应对异步场景和同步场景,由store自身充当dispatcher
- Vuex的更新是直接通过state实例,作为state方法来调用,而flux的action由view提交后,通过dispatch分发到store更新,然后再通知view更新。