# 服务架构
* * * * *
**什么是服务?**
在计算机领域中服务这个词应用非常广泛,比如操作系统里面的服务,比如分布式架构中的服务,再比如不同语言或框架对服务的解释也是有一定的出入。
咱们百度一下 服务 是啥意思, [释义] 履行职务,为大家做事
那么服务在OneBase中的意义就是跟这个示意差不多啦 ^_^。
在OneBase中建议将可能需要扩展的一组功能封装为服务, 就比如 支付服务,里面包含支付宝,微信 等,研发者可以扩展自己需要的支付。再比如短信服务,里面包含 阿里大鱼 等 短信发送方式,研发者可以扩展自己需要的短信平台。
服务封装的场景很多,就是咱们服务里面有很多服务提供商的情况下,像云存储,里面的服务提供商有 七牛,又拍云,阿里OSS 等,这样说相信大家更容易理解。
那么省市县三级联动插件 为什么不封装为服务呢?
因为省市县三级联动没有服务提供商,网上各种代码实现的效果也都是大同小异,最主要的是 三级联动功能咱们不需要进行横向扩展,顶多也就是将数据表中的城市信息更新一下,所以咱们就将ta封装成插件,方便复用就好咯。
* * * * *
**什么是驱动?**
![](https://box.kancloud.cn/fc6040685747bf4e9cd5af6b31b89325_392x900.png)
上图中的driver目录是TP5的驱动,OneBase的驱动是参考TP5的驱动设计的,如下图。
![](https://box.kancloud.cn/0b01ad0bb0c2e1945966eb9917787abf_323x742.jpg)
这样就很容易理解了吧,在OneBase里面 这些服务的提供者就是驱动,比如支付宝,比如七牛云 就是OneBase中的服务驱动,支付能力,云存储能力 就是 OneBase中的服务。
Driver.php 中定义了该服务下所有驱动的对外统一接口,这样研发者就只需要关注怎么实现驱动接口就好,以后新增一个支付服务驱动 比如 银联支付,只需要 实现 支付通知,获取订单 等接口方法就OK了,这样咱们驱动内部具体实现代码不管有多大变化 ,业务逻辑不管有多复杂,对上层提供统一调用方式,上层使用上毫无影响。
这算是在项目实战中使用多态的一种方式,希望童鞋们可以掌握。
![](https://box.kancloud.cn/3ddba301afee3139915e0efb90ef9a1d_1494x924.png)
- 序言
- 基础
- 安装环境
- 安装演示
- 规范
- 目录
- 介绍
- 后台介绍
- 后台首页
- 会员管理
- 系统管理
- 系统设置与配置管理
- 菜单管理
- 系统回收站
- 服务管理
- 插件管理
- 文章管理
- 接口管理
- 优化维护
- SEO管理
- 数据库
- 文件清理
- 行为日志
- 执行记录
- 统计分析
- 接口介绍
- 接口文档
- 错误码设计
- Token介绍
- 前台介绍
- 架构
- 架构总览
- 生命周期
- 入口文件
- 模块设计
- 依赖注入
- 控制器架构
- 逻辑架构
- 验证架构
- 服务架构
- 模型架构
- 行为架构
- 插件架构
- 配置
- 配置介绍
- 配置加载
- 配置扩展
- 请求
- 请求信息
- 日志
- 后台行为日志
- 系统执行日志
- 框架日志
- 数据
- 数据库设计
- 数据字典
- 数据库操作
- 事务控制
- 混合操作
- 实战
- 控制器
- 逻辑与验证
- 视图与模型
- 插件研发
- 服务研发
- 接口研发
- 杂项
- 数据导入导出
- 二维码条形码
- 邮件发送
- 云存储服务
- 支付服务
- 短信服务
- 微信分享
- 生成海报
- 聊天室
- PJAX
- Demo
- Widget
- 附录
- 常量参考
- 配置参考
- 函数参考
- 进阶
- Redis
- 自动缓存
- 全自动缓存
- 索引
- 数据签名
- 全自动事务
- 队列