软件系统与硬件和建筑系统最大的区别在于软件是可扩展的。一个硬件生产出来后一般都不会进行改变了,而且都会一直使用,知道不能使用为止;一栋房子建好了是不会去改变其整体架构,顶多也是进行装修,但是整体架构是不会变的。
软件系统的天生的可扩展性既是魅力所在,也是其难点所在。魅力体现在我们可以对软件系统进行修改和扩展,难点在于如何使用最小的代价去修改和扩展系统。
可扩展的基本思想
尽管可扩展的方式由很多种,但是请切记,万变不离其中的一个字:拆。
对其拆分后:
拆,原本就是讲一个大系统拆分成若干个小系统,扩展时只需要修改其中一部分就可以了,无须对整体系统都改动,通过这种方式来减小改动范围,从而也降低改动风险。
按照不同思路来拆分软件系统,就会得到不同的架构,常见的拆分思路有以下三种:
面向流程拆分:将整个业务系统提供的服务拆分为几个阶段段,每一个阶段作为一部分。
面向服务拆分:将系统提供的服务拆分,每一个服务作为一部分。
面向功能拆分:将系统提供的功能拆分,每个功能作为一部分。
理解上面三种思路的关键在于如何理解:流程、服务、功能三者的联系和区别,从范围上来说,流程-->服务-->功能,单纯从概念上来说可能难以理解,我们看下面这个案例。
比如说:一个学生信息管理系统(不要嫌弃这种案例,虽然看起来不咋地,但是咱们都是过来人,都搞过这类系统,所以这里采用学生信息管理系统大家都能很轻松的理解)。学生信息管理系统的拆分:
以下是上面各层的具体含义:
展示层:负责学生信息页面设计,不同的操作业务有不同页面。比如:登录页面,注册页面,修改密码页面,信息维护页面等。
业务层:负责具体业务逻辑的处理。比如:登录,注册,修改密码,学生信息修改等。
数据层:负责完成数据访问。比如:对数据库中的数据进行增删改查,记录相应的操作日志等。
存储层:负责数据的存储。比如:Mysql,Oracle,Redis等数据。
将系统分为登录、注册、信息管理、安全设置等服务,最终架构示意图为
每个服务都可能拆分为更多更细粒度的功能,比如:
注册服务提供多种方式进行注册,包括手机注册,身份证注册,邮箱注册,微信注册等,
登录服务包括手机号登录,身份证登录,邮箱登录,微信登录等。
信息管理包括学生基本信息管理,学籍管理,成绩课程管理等。
安全设置服务包括修改手机号码,修改密码,邮件验证,密码修改等。
通过以上学生信息管理系统的案例,我们可以发现,不同的拆分方式,架构图差异很大。但是好像无论使用哪种方式,最终都是可以实现的,那是不是我们随便找一个方案就拆呢?答案:否。我们不能随意拆分,要考虑多方面的因素,可能你考虑拆分的方式是很完美的,但是工期太久太长导致同时公司给不起那么久的时间。and so on!!!没有最完美的拆分方式,只有最适合的拆分方式。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有