组件化技术在编程和生活中的应用

1.组件化技术的本质

将相同功能的代码通过某些技术方式整合到一起,提供给业务调用,实现组件/模块的复用。

2.组件化技术的先决条件

从业务层面角度:业务抽象拆别拆分能力,是组件化技术的先决条件。拆别是将业务拆分成多个类别的具体业务(按X轴水平延展)。 拆分,是将具体的业务拆分成多个子业务,直到不能拆分为止(按Y轴垂直划分)。 拆分可以解决一个具体问题,而拆别+拆分可以解决一类问题。从技术层面角度:对于拆分后的业务进行编程语言、数据库、缓存的设计。举个例子,一个聊天的功能的业务拆别拆分图:

4.组件化技术的实现手段

操作系统层

windows 或 linux 系统 提供的动态依赖或者静态依赖库 dll,lib,so,a等。

编程语言层

PHP扩展:将C/C++代码 编译成PHP的扩展,增强PHP语言的功能。

PHP-Composer组件:通过对PHP脚本文件的引入进行统一的管理,实现跨PHP框架的调用,也可以方便的维护组件包的生命周期。

框架中的某个(某些)组件类:这种形式也算是组件化技术的实现,不过只能依赖于框架间的调用。

使用原生的PHP写的一些组件类:这种形式可以支持跨框架,不过需要调用方加载你的脚本,一般采用composer的形式作为加载方式,这样更容易。

网络层

RPC远程调用:可以将组件以RPC方式给客户端调用,从而实现跨语言的调用。

API:将组件写成API,常见的Restul风格形式提供客户端调用,比如一些云API提供给你某个功能组件,腾讯的验证码组件(腾讯防水墙)。

4. 组件化技术的缺陷与弥补方式

缺陷

组件化技术因为抽象了公共的模块,所以当业务发生改变的时候,往往组件可能满足不了需求。

弥补方式

在组件中预留接口/类/方法,方便组件的扩展。当然,如果是通过网络层实现组件技术,直接可以扩展API。

5.组件化技术思想的应用

组件化技术的思想不一定只应用于编程领域,其实生活中的方方面面都是存在的。

教育行业

传统的教育形式可能是线下授课方式,这种形式每个班级都需要配多个老师,每个老师都需要不停的给每个班级传授相同的课程。对于老师来说,这种授课方式的效率很低。于是在线教育的出现解决了这个问题,在线教育把授课老师的授课资源做成了“组件”(俗称录播),让学员直接调用“组件”就能完成授课。

支付领域

传统的支付,我们需要支付不同币种的现金,刷卡需要提供不同银行的银行卡等。而在线/移动支付,把这些支付方式做成了一个“组件”,让我们去调用。

组织结构

每个组织的部门,可以看作将处理相关业务的员工做成了一个“组件”(也就是部门),当业务来的时候,只需调用这些组件(业务分发到不同的部门)。

每个人都是一个“组件”

其实我们每个人都可以看作是一个组件,你能做什么就是组件对外提供的功能。所以多扩展自己的功能,让自己变得更有价值吧。

如无特殊说明,文章均为本站原创,转载请注明出处。如发现有什么不对的地方,希望得到您的指点。

发表评论

电子邮件地址不会被公开。 必填项已用*标注