什么是架构

 
架构”这个词常见,但如果深究一下“架构”到底指什么,大部分人也许并不一定能够准确地回答。
例如:架构和框架是什么关系?有什么区别?
Linux 有架构,MySQL 有架构,JVM 也有架构,使用 Java 开发、MySQL 存储、跑在 Linux 上的业务系统也有架构,应该关注哪个架构呢?
微信有架构,微信的登录系统也有架构,微信的支付系统也有架构,当我们谈微信架构时,到底是在谈什么架构?
要想准确地回答这几个问题,关键在于梳理几个有关系而又相似的概念:系统与子系统、模块与组件、框架与架构。

 

 
1.系统与子系统
    系统:由一群有关联的个体组成,按照某种规则运作,能完成个别元件所不能单独完成的工作的群体。
    子系统:子系统也是由一群有关联的个体组成的系统。是更大的系统中的一部分。
 
2.模块与组件
    模块:软件模块(Module)是一套一致而互相有紧密关联的软件组织。包含了程序和数据结构两部分。模块有接口,模块间可以互相调用。
    组件:自包含的、可编程的、可重用的的软件单元。软件组件可以很容易被用于组装应用程序中。
     模块和组件都是系统的组成部分,只是从不同的角度拆分系统而已。
 
3.框架与架构
    框架(framework):为了实现某个业界标准或完成特定基本任务的软件组件规范。也指为了实现某个软件组件规范时,提供规范要求只基础功能的软件产品。
    架构(Architecture):软件架构的“基础结构”,创造这些基础结构的准则,以及对这些结构的描述。
     框架关注的是“规范”,架构关注的是“结构”。
 
4.重新定义架构
    参考维基百科的定义,我将架构重新定义为: 软件架构指软件系统的顶层结构
    这个定义看似很简单,但包含的信息很丰富,基本上把系统、子系统、模块、组件、架构等概念都串起来了,我来详细解释一下。
    • 首先,“系统是一群关联个体组成”,这些“个体”可以是“子系统”“模块”“组件”等;架构需要明确系统包含哪些“个体”。
    • 其次,系统中的个体需要“根据某种规则”运作,架构需要明确个体运作和协作的规则。
    • 第三,维基百科定义的架构用到了“基础结构”这个说法,我改为“顶层结构”,可以更好地区分系统和子系统,避免将系统架构和子系统架构混淆在一起导致架构层次混乱。
 
5.架构的分类(系统架构,技术架构,应用架构)
    • 系统架构:指的完整系统的组成架构,例如系统分成几个部分?服务平台、管理门户、终端门户、ATM门户、外部系统以及接口、支撑系统等,将这些系统进行合理的划分。然后再进行功能分类细分,例如服务平台内部划分为系统管理、用户管理、帐号管理、支付管理、接口层、统计分析等逻辑功能。总之,将整个系统业务分解为逻辑功能模块,并且科学合理,就是系统架构了。
    • 技术架构:从技术层面描述,主要是分层模型,例如持久层、数据层、逻辑层、应用层、表现层等,然后每层使用什么技术框架,例如Spring、hibernate、ioc、MVC、成熟的类库、中间件、WebService等,分别说明,要求这些技术能够将整个系统的主要实现概括。
    • 应用架构:主要考虑部署,例如你不同的应用如何分别部署,如何支持灵活扩展、大并发量、安全性等,需要画出物理网络部署图。按照应用进行划分的话,还需要考虑是否支持分布式SOA。
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员学习圈

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值