系统架构
架构与框架之间的区别与联系
只要清楚了两者的定义,它们之间的区别就很明显了。
架构(Architecture):
软件架构是有关软件整体结构与组件的抽象描述,用于指导大型软件系统各个方面的设计。 架构是一系列关于软件系统组织的重要决策。软件架构决策涉及到软件系统核心(主体、基础)结构的组成元素,以及这些核心组成元素之间的相互依赖、交互、协作等关系。 一个软件的架构是动静结合的,既包括核心元素之间的静态结构(static structural)关系,也包括动态行为(dynamic behavioral)关系。
软件架构对应的职业就是软件架构师 。
与建筑师设定建筑项目的设计原则和目标,作为绘图员画图的基础一样,软件架构师或者系统架构师陈述软件架构以作为满足不同客户需求的实际系统设计方案的基础。
框架(Framework):
框架是特定语言和技术的架构应用解决方案 ,通常指的是为了实现某个业界标准或者完成特定的基本任务的软件组件规范。框架,与具体的软件应用无关,但是提供并实现最为基础的软件架构和体系。程序员根据特定的框架来实现更为复杂的业务逻辑。框架是集成了程序员代码和多种第三方解决方案的工具,让程序员聚焦业务逻辑代码而不是技术实现。
框架可以看作一种特殊的软件,它并不能提供完整无缺的解决方案,而是为程序员构建解决方案提供良好的基础。框架是半成品 。
简而言之,框架就是制定一套规范或者规则(思想),让大家(程序员)能够在该规范或者思想下工程。或者说使用别人搭好的舞台来做编剧或导演
两者间的联系:
在架构中,从大的层面来说,针对某一个系统架构,里面可能会用到多种解决各方面问题的框架,关注的是技术整合、扩展、可维护性 。而换个角度,在框架中也会涉及到架构问题,比如开发一个新的框架,也需要考虑如何进行整体的设计,架构决策往往会体现在框架之中 。
以眼底图像标注系统为例进行分析
三层架构模式图(细致到分区):
以上明确的三层结构能够给开发者带来便利:
从整体上分析:
- 开发人员只需要关注各自所在结构中的某一层
- 当某一层需要发生改变甚至重构时,只要不改变接口,其它层可以完全不受影响
- 大幅度减少了依赖和耦合程度,有利于各层逻辑复用,结构明确,大部降低维护成本。
- 当出现问题时,从不同层次上查找问题,可以很容易确定问题出现的模块。
按阶段分析:
- 设计:设计阶段,前后端之间只需要共同协定RESTapi的设计,而不需要考虑具体的语言,框架等因素。
- 开发:在已有的API文档的基础上,前后端的开发可以并发进行,互不干扰。
- 测试:前端可以利用mock测试,后端可以利用curl/wget等命令或框架自带的GUI完成测试,前后端达到分离测试,减少了集成测试时出现问题的概率,减少回归成本。
- 维护:层与层之间的分离使得维护变得更为简单。
VUE 与 Flux 状态管理的异同
vue:
vuex是专门为vue提供的状态管理工具 。
vuex核心:
- state:存放多个组件共享的状态(数据)
- mutations:存放更改state里状态的方法,用于变更状态,是唯一一个更改状态的属性
- getters:将state中某个状态进行过滤,然后获取新的状态,类似于vue中的computed
- actions:用于调用事件动作,并传递给mutation
- modules:主要用来拆分state
Flux:
- 状态集管理框架,由facebook创建
- 专门用来构建前端框架结构的框架 ,便于维护
- 用于安全考虑,它分为四层:view视图层,action层,dispatcher派发层,store仓库层
本文为博主原创文章,转载请注明出处。