Skip to content

3.常见的系统级框架

前言

提到架构就不得不提框架。

架构我们上一节讲到,是指系统的结构,那么对于某种结构,我们需要按照其结构完成对应的功能和开发。

那么有没有能帮助填充好,或者已完成部分工作的呢?

有的,那就是框架。

就像我们写ppt或者word,比较好的结构是有封面,有目录页,有页眉/页脚,有结尾等,如果我们自己做,就需要从头开始,每个地方都要做一些。

但是可以用一些别人做好的,或者自己上次使用过的文档,那么直接改成自己想要的内容就可以了,工作量立省一大半。

所以你也可以理解框架是一种模板。

常见的框架

web系统框架

在目前的web系统体系中,比较流行的是单体项目架构、前后端分离项目架构、微服务项目架构。

前后端不分离

前后端不分离,都在一个程序包中,也就是一套系统里可以实现从数据库读取到页面呈现的所有功能。

典型的就是php的thinkphp和Larave,用户看到的页面其实都是php文件,php文件通过调用相关服务呈现出了html文件的燕子。

这种架构是之前颇为流行,现在也有一些场景还在使用。

前后端分离项目架构

项目分为两个系统,两个项目独自开发,独立部署,通过接口的进行数据通信。

前端系统负责界面现实,显示内容。 后端系统是指程序或者服务,负责逻辑、数据计算。

例如查看用户余额的时候,前端系统向后端系统请求余额数据,后端系统返回对应的数据,例如:

而前端系统根据获得的数据进行显示。

前端常见的web框架有

  • vue
  • react
  • angular

前端常见的APP/HTML5框架

  • uniapp: 跨平台,一套代码,多端发布
  • flutter: 跨平台,一套代码,多端发布
  • react-native: 跨平台,一套代码,多端发布
  • weex: 跨平台,一套代码,多端发布
  • taro: 跨平台,一套代码,多端发布
  • 终端原生: 使用每种终端的sdk 研发。

前端的发展比较快,随时都会有新的框架出现。

后端框架:

  • java:sprintboot
  • c#/net:.net webapi
  • go: gin

微服务架构

微服务是指将后端服务拆分成了1+多模式,或者多+多模式。 以1+多模式,相当于使用服务的时候,都去找一个领头的人,然后他会分配一个具体干活的人来负责。 实现的过程简单来说就是: 第一,所有干活的人都要先去领头哪里报道,这一部分称为服务发现。 这个负责领导的人,我们称之为服务网关。

第二,当有请求时,由领头的根据规则和类型分配给具体某个干活的服务。

第三,领头的会时不时询问干活的人,还能不能继续接受新任务,以及还在不在,不如服务的离线。

微服务架构主要讨论实现微服务的体系,不讨论所对应的后端框架。

  • java: Springcloud、Dubbo
  • .net: Consul 、Service Fabric(托管)
  • go: go-zero、gRPC
  • rpc框架: ZeroC-Ice、Thrift、Tars

客户端框架

是指做独立客户端应用的框架,例如常用的QQ就是一个客户端,客户端跟操作系统关系比较大,当然也有一些号称跨平台的方案,但是并不是太好。 毕竟选择用客户端就说明有性能、本地存储之类的需求,如果最后开发完之后实现不了这些还不如用web端解决方案。

选择框架

框架的选择是由技术团队来选择,产品人员一般了解即可,但是在技术选型的过程中,产品人员需要提供功能范围和需求供技术人员参考。

因为框架的好坏难以一言盖之,产品使用什么框架也需要根据自身的情况来考虑, 例如团队实力、交付周期、客户要求、功能特点。

具体来说就是如果是简单的功能,并且交付周期比较短,就选择较为容易上手的框架。 如果是复杂的功能,或者交付时间比较长,那么可以考虑更成熟或者性能更好的框架,甚至自己打造一个框架。

例如要做一款客户端,需要涉及到很多硬件设备的调用,那么需要提前告知开发人员,否则选择一些混合模式的框架可能就无法调用或者调用很困难。

这是框架的问题,改不了

不得不说,这可能是产品人员在提需求的时候,经常被拒绝的理由之一。那么到底是是不是框架的问题呢? 实际上情况会分几种: 1、框架没问题,但是使用的方式有问题 框架本身没有问题,但是使用方式错了,导致框架报错了,所以技术人员说是框架的问题。

2、对框架不熟,导致某些功能不了解不会用。 框架一般包含很多的功能,如果只用一些表面的功能而不深入研究,对于某些功能点是不太了解,好比大多数人都只用excel做做表单,但是对于公式、数据透视表之类的基本都不太了解,然后就反馈说excel做不了。

3、框架确实做不了,绕过方式又太麻烦。 框架虽然做不了,不过框架作者提供了扩展方案,然而技术团队不想学习或者觉得扩展的技术门槛太高、太耗人工之类的原因,不愿意做。

4、确实做不了。 真的做不了,如果想实现对应的功能,唯有换框架。

对于以上几种情况,实际上前三种的比较多,尤其是第二种, 一般是技术团队的任务比较重,又不给技术人员了解学习的时间,所以才会产生一开始的问题,碰到问题就说是框架的问题。

具体是那种问题,其实应该由技术总监或者技术经理来判断,产品人员需要提供的就是该需求的重要程度以及优先级。如果是可有可无的需求或者优先级没那么高,那么就需要放一放了。

而如果是重要的需求,即使是难度很大,也是需要技术团队去攻克。

总结 以上是简单一些跟架构相关的系统级别框架,还有其他更底层或者更技术的框架作为整体系统的补充,就不在此讲解。